SQLServer:如何测试字符串是否只有数字字符?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (161)

在SQL Server 2008中。我试图测试一个字符串(varchar)是否只有数字字符(0-9)。我知道IS_NUMERIC函数可以给出错误的结果。(我的数据可能有$符号,不应该通过测试。)所以,我正在避免该功能。

我已经有一个测试,查看一个字符串是否有任何非数字字符,即,

some_column LIKE '%[^0123456789]%'
提问于
用户回答回答于

使用Not Like

where some_column NOT LIKE '%[^0-9]%'

demo

declare @str varchar(50)='50'--'asdarew345'

select 1 where @str NOT LIKE '%[^0-9]%'
用户回答回答于

有一个称为ISNUMERIC for SQL 2008及以上的系统函数。一个例子:

SELECT myCol
FROM mTable
WHERE ISNUMERIC(myCol)<> 1;

我做了一些快速测试,并进一步查看了文档:

ISNUMERIC returns 1 when the input expression evaluates to a valid numeric data type; otherwise it returns 0.

这意味着它是相当可预测的,例如

-9879210433会通过,但987921-0433没有。 $9879210433会通过,但9879210$433没有。

扫码关注云+社区

领取腾讯云代金券