sql - 为什么 ISNUMERIC (',' ) 是真的?

标签 sql sql-server-2008

为什么以下 SQL 查询返回 true? 我预计它是错误的,因为它无法转换为 int或数值

select ISNUMERIC(',')

返回1 ???

select ISNUMERIC('0,1,2')

select ISNUMERIC(',,,')

还返回1

如何在 SQL 中进行严格的数字检查?

最佳答案

因为 ISNUMERIC 回答了一个没有人想问的问题:

Can this given string be converted into any of SQL Server's numeric data types? And I don't care which of those types it can or cannot be converted into.

这就是为什么TRY_CONVERT终于在 2012 年引入 - 回答有关您可能关心的特定数据类型的问题。

<小时/>

对于早期版本,您通常可以做的最好的事情就是使用 LIKE 来识别您确实想要尝试转换的字符串模式。

例如如果您只想检测数字,请使用 Value NOT LIKE '%[^0-9]%',它要求 Value 字符串 包含任何不是数字的字符。

关于sql - 为什么 ISNUMERIC (',' ) 是真的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24053613/

相关文章:

sql - 无法连接到远程SQL Server

mysql - Crate DB 中的复杂查询可能吗?

sql - 返回逗号分隔值 SQL

java - SQL 插入 '

sql-server - "The specified ' @notify_email_operator_name ' is invalid"错误

SQL Server 2008,搜索特殊字符

sql-server - SQL Server 中的随机排序

sql - MSSQL 中带有 XML 查询的存储过程参数给出 "argument must be string literal"

MySQL - 如何连接多个查询?

sql - 为什么在希伯来语字符串中搜索值时没有显示结果?