我必须编写一个查询来获取包含数字作为子字符串
的列的所有行Result
-----
abc123
wz127bdn
现在我想要的结果是
SELECT data
FROM table
WHERE data like '%[0-9]%'
我写了像
这样的查询{{1}}
但这不是取得结果。
答案 0 :(得分:1)
您需要REGEXP_LIKE
:
SQL> with test(data) as (
2 select 'abc123' from dual union all
3 select 'defgh' from dual union all
4 select 'wz127bdn' from dual union all
5 select '[0-9]' from dual
6 )
7 select *
8 from test
9 where regexp_like(data, '[0-9]')
10 ;
DATA
--------
abc123
wz127bdn
[0-9]
LIKE
不会将'[0-9]'解释为“寻找数字”,但与您编写完全一样,从而搜索字符串'[0-9]':
SQL> with test(data) as (
2 select 'abc123' from dual union all
3 select 'defgh' from dual union all
4 select 'wz127bdn' from dual union all
5 select '[0-9]' from dual
6 )
7 select *
8 from test
9 where data like '%[0-9]%' ;
DATA
--------
[0-9]
答案 1 :(得分:1)
在Oracle中使用regexp_like()
:
SELECT data
FROM table
WHERE regexp_like(data, '[0-9]');
请注意,通配符不是必需的,因为正则表达式匹配字符串中的任何位置。如果您愿意,可以这样做:
WHERE regexp_like(data, '.*[0-9].*');