如何在varchar列中搜索数字

时间:2010-04-20 06:22:23

标签: sql sql-server

我在SQL数据库表中有一个简单的nvarchar(25)列。大多数情况下,此字段应包含字母数字文本。但是,由于操作员错误,在许多情况下它只包含一个数字。我可以在SQL中进行简单搜索来识别这些情况吗?也就是说,确定表中的哪些行仅包含此列中的数字。作为扩展,我还可以搜索那些仅包含数字和空格和/或斜杠的列值。

在其他语言(例如Perl,Java)中,正则表达式可以快速轻松地解决这个问题。但我无法在SQL中找到等效的东西。

4 个答案:

答案 0 :(得分:2)

是的,你可以通过使用sql sever

中提供的isnumeric函数来实现这一点

点击此链接查看更多内容:http://msdn.microsoft.com/en-us/library/aa933213(SQL.80).aspx

答案 1 :(得分:2)

所有答案都提到了isnumeric函数,但它们不正确,我在评论中提到了所有答案中的答案中的缺陷。正确的解决方案是在where子句中使用正则表达式,其中包含的不像'%[^ 0-9]%',请参阅下面的示例:

select column_name from table_name where column_name not like '%[^0-9]%'

答案 2 :(得分:1)

仅限数字:

 SELECT * FROM Table WHERE ISNUMERIC(Field) = 1

有空间:

 SELECT * FROM Table WHERE Field LIKE '% %'

使用Slash:

 SELECT * FROM Table WHERE Field LIKE '%/%'

组合:

 SELECT * FROM Table WHERE ISNUMERIC(Field) = 1 OR  Field LIKE '% %' OR Field LIKE '%/%'

答案 3 :(得分:0)

select column_name from table_name where IsNumeric(column_name) <> 1