Sql 如何在varchar列中搜索数字

Sql 如何在varchar列中搜索数字,sql,sql-server,Sql,Sql Server,我在SQL数据库表中有一个简单的nvarchar(25)列。大多数情况下,此字段应包含字母数字文本。但是,由于运算符错误,在许多情况下,它只包含一个数字。我可以在SQL中进行简单搜索以识别这些情况吗?也就是说,确定表中哪些行在此列中只包含数字。作为扩展,我还可以搜索那些只包含数字、空格和/或斜杠的列值 在其他语言(如Perl、Java)中,正则表达式可以快速轻松地解决这个问题。但是我还没有在SQL中找到相应的函数。是的,您可以通过使用SQL Server中提供的isnumeric函数来实现这一点

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


在其他语言(如Perl、Java)中,正则表达式可以快速轻松地解决这个问题。但是我还没有在SQL中找到相应的函数。

是的,您可以通过使用SQL Server中提供的isnumeric函数来实现这一点


查看此链接的更多信息:

是,您可以通过使用sql Server中提供的isnumeric函数来实现此目的

查看此链接的更多信息:

从表名称中选择列名称,其中为数字(列名称)1
从表名称中选择列名称,其中为数字(列名称)1
仅数字:

 SELECT * FROM Table WHERE ISNUMERIC(Field) = 1
空间:

 SELECT * FROM Table WHERE Field LIKE '% %'
带斜杠:

 SELECT * FROM Table WHERE Field LIKE '%/%'
合并:

 SELECT * FROM Table WHERE ISNUMERIC(Field) = 1 OR  Field LIKE '% %' OR Field LIKE '%/%'
仅限数字:

 SELECT * FROM Table WHERE ISNUMERIC(Field) = 1
空间:

 SELECT * FROM Table WHERE Field LIKE '% %'
带斜杠:

 SELECT * FROM Table WHERE Field LIKE '%/%'
合并:

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

所有答案都引用了isnumeric函数,但它们并不正确,我在所有答案的评论中提到了答案中的缺陷。正确的解决方案是在where子句中使用正则表达式,该子句不包含类似“[^0-9]”,请参见以下示例:

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

所有答案都引用了isnumeric函数,但它们并不正确,我在所有答案的评论中提到了答案中的缺陷。正确的解决方案是在where子句中使用正则表达式,该子句不包含类似“[^0-9]”,请参见以下示例:

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

您接受的答案的可能副本无效。请尝试
选择ISNUMERIC('1E2')、ISNUMERIC('1D2')
您接受的答案可能重复不起作用。尝试选择ISNUMERIC('1E2')、ISNUMERIC('1D2')Cool。例如,如果我想搜索“30/23”,该怎么办;那将很难。在2005年及以后,我会说使用正则表达式。这里的isnumeric函数不好,因为isnumeric('787315689001e180')是真的,但是输入包含一个不是数字的“e”。酷。例如,如果我想搜索“30/23”,该怎么办;那将很难。在2005年及以后,我会说使用正则表达式。这里的isnumeric函数不好,因为isnumeric('78731568001E180')是真的,但是输入包含一个不是数字的“e”。这里的isnumeric函数不好,因为isnumeric('78731568001E180')是真的,但是输入包含一个“e”,不是数字。此处的isnumeric函数不好,因为isnumeric('78731568001E180')为真,但输入包含一个不是数字的“e”。此处的isnumeric函数不好,因为isnumeric('78731568001E180')为真,但输入包含一个不是数字的“e”。此处的isnumeric函数不好,因为isnumeric('787315689001e180')为true,但是输入包含一个不是数字的“e”。