如何检查一个字符串中是否包含数字?

11

我需要检查一个字符串是否包含数字,不管是什么数字。

例如:

'test' = 没有数字。

'test2' = 包含数字。

4个回答

27

使用正则表达式

SELECT *
FROM test
WHERE REGEXP_LIKE(testcol, '[[:digit:]]');

不使用正则表达式:
SELECT *
FROM test
WHERE testcol LIKE '%0%'
    OR testcol LIKE '%1%'
    OR testcol LIKE '%2%'
    OR testcol LIKE '%3%'
    OR testcol LIKE '%4%'
    OR testcol LIKE '%5%'
    OR testcol LIKE '%6%'
    OR testcol LIKE '%7%'
    OR testcol LIKE '%8%'
    OR testcol LIKE '%9%'

4

这是我用来检测一个字符串是否包含数字的技术:

select LAST_NAME, 'contains a number'
  FROM names
 where translate(LAST_NAME, '0123456789', '') <> LAST_NAME

这种方法是通过将数字转换为空字符串来实现的。如果字符串保持不变,则它不可能包含数字。

这种技术还可以用于测试一个字符串是否全为数字。

select TEL_NUMBER, 'is all numbers'
  FROM names
 where trim(translate(TEL_NUMBER, '-0123456789', '')) = ''

在电话号码中我加入了一个破折号,因为电话号码通常包含破折号。


0

我有时在NetSuite保存的搜索中使用REGEXP_INSTR,因为SQL函数受到限制。如果未找到数字,则返回零,或者返回字符串中第一个数字的起始位置:

REGEXP_INSTR(my_var, '[[:digit:]]')

这个例子返回零:

REGEXP_INSTR('test', '[[:digit:]]')

这个例子返回一个大于零的数字,因为它找到了一个数字:

REGEXP_INSTR('test2', '[[:digit:]]')

0

我会尝试使用正则表达式。例如:

select regexp_instr('%[0-9]%',@str1) from table_name;

祝福 --Jocke


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接