为什么以下 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/