我有一个具有以下结构的表:
Example_table(Customer_Num varchar2(50))
此表中的一些示例数据:
Example_table
----------------------------
Customer_Num
12445
12345
12ttd
2376y
23%%*
23467
我想选择带有数字字符的 custoemr_num 记录,因此这些记录12ttd , 2376y , 23%%*
不应出现在最终结果中。考虑到我无法更改表结构这一事实,哪一个是正确的查询?
Q-1:
select customer_num
from Example_table
where REGEXP_LIKE(customer_num, '[[:digit:]]')
Q-2:
select customer_num
from Example_table
where REGEXP_LIKE(customer_num, '[0-9]')
是否存在这些查询可能最终产生错误结果的特殊情况?提前致谢。
两者都不正确,因为两者都只检查可以出现在字符串中任何位置的单个数字。
只选择完整字符串中的数字的正则表达式是:
^
将表达式锚定在字符串的开头(以避免前导非数字)[0-9]+
匹配多个数字但至少一个$
将表达式锚定在字符串的末尾(以避免尾随非数字)[0-9]
使用和使用没有区别[[:digit:]]