Я создаю квазибулевы столбцы следующим образом:
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()
ожидает символьный тип, но я не знаю, как решить эту проблему.
Правильно ли я делаю это? Если да, то как исправить ошибку, которую я получаю? Если нет, то как лучше это сделать?