首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQL Server :如何测试字符串是否只有数字字符

SQL Server :如何测试字符串是否只有数字字符
EN

Stack Overflow用户
提问于 2015-02-07 00:26:24
回答 7查看 125.5K关注 0票数 46

我在SQL Server 2008中工作。我正在尝试测试一个字符串(varchar)是否只有数字字符(0-9)。我知道IS_NUMERIC函数可能会产生虚假的结果。(我的数据可能有$ signs,它不应该通过测试。)所以,我避免使用这个函数。

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

代码语言:javascript
复制
some_column LIKE '%[^0123456789]%'

我认为唯一的数字测试应该是类似的东西,但我现在一片空白。有什么想法吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-02-07 00:45:26

使用Not Like

代码语言:javascript
复制
where some_column NOT LIKE '%[^0-9]%'

演示

代码语言:javascript
复制
declare @str varchar(50)='50'--'asdarew345'

select 1 where @str NOT LIKE '%[^0-9]%'
票数 77
EN

Stack Overflow用户

发布于 2015-02-07 00:30:30

对于SQL2008和更高版本,有一个名为ISNUMERIC的系统函数。举个例子:

代码语言:javascript
复制
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不会。

因此,使用这些信息,您可以根据list of valid currency symbols+ & -字符进行剔除。

票数 13
EN

Stack Overflow用户

发布于 2019-02-27 04:07:47

解决方案:where some_column NOT LIKE '%[^0-9]%'是正确的。

只有一个重要的注意事项:当字符串列= '' (空字符串)时添加验证。这个场景将返回''也是一个有效的数字。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28370295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档