我正在使用 SQL Server 2008 R2。当我执行以下查询时,ISNUMERIC 的计算结果为 true(1),而条码内部显然有“D”。
SELECT ISNUMERIC('7210300106D30')
如果我用 D 或 E 以外的其他字母执行相同的代码,它似乎评估为 false(0),这正是我所期望的。
SELECT ISNUMERIC('7210300106K30')
任何人都可以解释为什么会发生这种情况吗?谢谢。
最佳答案
如果您正在寻找数字字符串,请不要使用 isnumeric()
。只需使用 like
:
select (case when col like '%[^0-9]%' then 0 else 1 end) as IsAllDigits
如果您想尝试转换,请使用
try_convert()
:select (case when try_convert(bigint, col) is null then 0 else 1 end) as IsConvertable
关于SQL Server ISNUMERIC 返回错误数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42787933/