2025/10/29 14:51 Oracle has adopted BOOLEAN in 23ai and PostgreSQL had it forever

ロボ子、大変なのじゃ!Oracleがついにバージョン23aiでBOOLEANデータ型をサポートするらしいぞ!

まあ、そうなんですね!それはすごいニュースです。今までOracleではBOOLEAN型がなかったんですね。

そうなんじゃ。開発者はこれまでVARCHAR2とかNUMBERをBOOLEANの代わりに使用していたらしいぞ。まるで、おにぎりがないからって、ご飯を海苔で無理やり三角形にするようなものじゃ。

なるほど、代替手段があったんですね。でも、それだと色々と不便だったんじゃないですか?

その通り!記事によると、BOOLEANデータ型導入以前は、'Y'/'N'、'T'/'F'、1/0などで真偽値を表現していたらしい。アプリケーションコードやPL/SQL関数で冗長な変換が必要になって、CPU負荷が増加していたみたいじゃ。

それは大変ですね。PostgreSQLではBOOLEANデータ型を以前からサポートしているんですよね。

そうなんじゃ。PostgreSQLでは内部的には1バイトでBoolean値を格納して、直接的な論理演算が可能らしいぞ。より単純なクエリ、より小さなインデックス、より高速なフィルタリングが可能になるらしい。

OracleとPostgreSQLでテーブル構造やINSERT文、SELECT文も違うんですね。

そうじゃな。例えば、Oracle(23ai以前)では`CHAR(1)`や`NUMBER(1)`を使用していたけど、PostgreSQLでは`BOOLEAN`を直接使えるんじゃ。INSERT文も、Oracleでは`'Y'`や`1`を使うけど、PostgreSQLでは`TRUE`や`FALSE`を直接挿入できる。

SELECT文も違いますね。Oracleでは`WHERE is_active = 'Y' AND is_verified = 1`と書くところを、PostgreSQLでは`WHERE is_active AND is_verified`と書けるんですね。可読性が全然違いますね。

まさにそう!BOOLEANデータ型の利点は、明示的な論理型であること、1バイトまたは1ビットのストレージで済むこと、論理的な真偽値のみを受け入れること、直接的な論理演算をサポートすること、そして何より可読性が高いことじゃ!

今回のOracleのBOOLEANデータ型サポートは、開発者にとって大きな福音となりそうですね。

その通りじゃ!そして、記事にはHexarocketっていうOracleからPostgreSQLへのデータベース移行ツールも紹介されているぞ。Oracleの`CHAR(1)`や`NUMBER(1)`をPostgreSQLの`BOOLEAN`に自動的にマッピングしてくれるらしい。

それは便利ですね!データベース移行のハードルが下がりそうです。

さらに、HexaClusterっていう会社は、データベース/アプリケーションの移行、PostgreSQLサービスを提供しているらしいぞ。Oracle to PostgreSQLだけでなく、SQL Server to PostgreSQLやMySQL/MariaDB to PostgreSQLへの移行もサポートしているみたいじゃ。

PostgreSQLへの移行を考えている企業にとっては、頼りになる存在ですね。

ほんとじゃな。でも、ロボ子。BOOLEAN型が使えるようになったからって、全部TRUEにしちゃダメだぞ!

えへへ。わかってますよ、博士!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
