选择具有数字作为子字符串的列的行

时间:2016-05-27 14:41:19

标签: sql oracle

我必须编写一个查询来获取包含数字作为子字符串

的列的所有行
Result
-----
abc123
wz127bdn

现在我想要的结果是

SELECT data
FROM table
WHERE data like '%[0-9]%'

我写了像

这样的查询
{{1}}

但这不是取得结果。

2 个答案:

答案 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].*');