私はこのような準ブール列を作成:Oracle:列が "ブール値"かどうかを判断する方法
CREATE TABLE foo
bar NUMBER(1) DEFAULT 0 NOT NULL CHECK (hide IN (0, 1))
私は現在user_tab_columns
をこすることだし、与えられた列がブール値であるかどうかを判断できるようにしたいと思います。これまでのところ、私はこれ持っている:
SELECT column_name,
(SELECT COUNT(*)
FROM all_constraints
WHERE table_name = table_name
AND constraint_type = 'C'
AND REGEXP_LIKE(search_condition, '^ *' || column_name || ' +IN *\(*0, *1 *\) *$', 'i')) is_boolean
FROM user_tab_columns;
をしかし、私は次のエラーを取得しています:
ORA-00932: inconsistent datatypes: expected NUMBER got LONG
00932. 00000 - "inconsistent datatypes: expected %s got %s"
*Cause:
*Action:
Error at Line: 6 Column: 31
私はsearch_condition
データ型がLONG
であるためであることを学んだ、とREGEXP_LIKE()
を期待しました文字の種類が、この問題を解決する方法がわかりません。
これは正しい方法ですか?もしそうなら、どうすればエラーを解決できますか?そうでない場合は、これを行うためのより良い方法は何ですか?
私はお詫び申し上げます、スタックオーバーフローは私に提出と編集でエラーを与えています。これは本当の質問でした。私は誓います:( – FtDRbwLXw6
私の 'CREATE TABLE'クエリを包み込んだ'( '') 'のように思われません... ???? – FtDRbwLXw6
個人的に私はCHAR IMO番号は、CHARフィールドがそうでないように誤用されがちです。YMMV。 –