我将在一个语句中使用regex_count和regex_like,但首先我需要计算才能工作。我不明白为什么当这些是有效列,正确数量的括号和我有撇号时会出现错误。还使用Oracle SQL Developer。
select employee_name, LTRIM(street)
from employee
where
regexp_count( street, '[[:digit:]]' );
ORA-00920:无效的关系运算符
00920. 00000 - “无效的关系运营商”
*原因:
*行动:
行错误:4列:37
我真正要做的是从街道上删除任何起始街道号码并返回结果集。我打算在下面使用它,然后弄清楚如何将它提供给子字符串函数以获得我正在寻找的结果集。有什么建议吗?
select employee_name, LTRIM(street)
from employee
where
regexp_like ( street, '[[:digit:]]', 1, regexp_count( street, '[[:digit:]]' ) );
答案 0 :(得分:2)
REGEXP_COUNT()
返回一个整数,而不是布尔值。所以,你需要进行比较:
select employee_name, LTRIM(street)
from employee
where regexp_count( street, '[[:digit:]]' ) > 1;
如果比较只是> 0
,那么您不需要计算模式的数量。只需使用regexp_like()
。
如果您要删除前导数字,请使用regexp_substr()
:
select regexp_substr(street, '[^[:digit:]].*')