次のような準ブール列を作成します。
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()
、文字型を想定しているためであることがわかりましたが、この問題を解決する方法がわかりません。
私はこれを正しい方法で行っていますか?もしそうなら、どうすれば私が得ているエラーを修正できますか?そうでない場合、これを行うためのより良い方法は何ですか?