我在SQL数据库表中有一个简单的nvarchar(25)列。大多数情况下,此字段应包含字母数字文本。但是,由于操作员错误,在许多情况下它只包含一个数字。我可以在SQL中进行简单搜索来识别这些情况吗?也就是说,确定表中的哪些行仅包含此列中的数字。作为扩展,我还可以搜索那些仅包含数字和空格和/或斜杠的列值。
在其他语言(例如Perl,Java)中,正则表达式可以快速轻松地解决这个问题。但我无法在SQL中找到等效的东西。
答案 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