1. ホーム
  2. oracle

[解決済み] オラクルのブーリアンフィールド

2022-05-05 15:57:52

質問

昨日、Oracleのテーブルにbooleanフィールドを追加したいと思いました。 しかし、実際にはOracleにbooleanデータ型はありません。 どなたか、booleanをシミュレートする最良の方法をご存知でしょうか? ググってみると、いくつかの方法が見つかりました。

  1. 整数を使い、0か1以外をわざわざ代入しない。

  2. Y'または'N'の2つの値のみを持つcharフィールドを使用します。

  3. CHECK制約のあるenumを使用する。

経験豊富なOracle開発者は、どのアプローチが好ましいか/正統的か知っていますか?

どのように解決するのですか?

私は これ のリンクが便利です。

以下は、各アプローチの長所と短所を強調した段落です。

<ブロッククオート

最もよく見られるデザインは、多くのブール値のようなものを模倣することです。 Oracle のデータディクショナリビューが使用しているフラグで、'Y' を選択すると true になります。 を、'N' は false を表します。しかし、ホスト JDBC、OCCI、その他のプログラミング環境など。 のように、0を選択するとfalse、1を選択するとtrueとなり、より効果的です。 getBoolean関数とsetBoolean関数で正しく動作します。

基本的に彼らは、効率のために、2番の方法を提唱しています。

  • の0/1(JDBCとの相互運用性のために getBoolean() など)をチェックする制約があります。
  • a タイプ のCHARを使用します(NUMBERよりも使用するスペースが少ないため)。

彼らの例

create table tbool (bool char check (bool in (0,1));
insert into tbool values(0);
insert into tbool values(1);`