当我遇到一个奇怪的麻烦时,我正在使用SQL Server中的ISNUMERIC函数。
检查包含以下字符的文本ISNUMERIC函数返回1(true)。为什么呢?
Tab char(9)
Line feed char(10)
Carriage return char(13)
由于
答案 0 :(得分:3)
不仅是Char(9),它还适用于以下所有值。
SELECT [Ascii Code] = STR(Number),
[Ascii Character] = CHAR(Number),
[ISNUMERIC Returns] = ISNUMERIC(CHAR(Number))
FROM Master.dbo.spt_Values
WHERE Type = 'P'
AND Number BETWEEN 0 AND 255
AND ISNUMERIC(CHAR(Number)) = 1
Ascii Code Ascii Character ISNUMERIC Returns
---------- --------------- -----------------
9 1
10 1
11 1
12 1
13 1
36 $ 1
43 + 1
44 , 1
45 - 1
46 . 1
48 0 1
49 1 1
50 2 1
51 3 1
52 4 1
53 5 1
54 6 1
来自官方文件......重点突出......
当输入表达式计算为有效整数,浮点数,金钱或小数类型时,ISNUMERIC返回1;否则返回0.返回值1保证表达式可以转换为这些数值类型之一
因此如果Isnumeric返回上面突出显示部分中的任何一个类型,它将返回1。
Jeff moden描述部分here ..
的原因有许多不同的字母,数字和符号组合可以实际转换为数字数据类型,ISNUMERIC将为所有这些组合返回“1”。这不是一个缺陷......这就是它的工作方式!
参考文献:
http://www.sqlservercentral.com/articles/ISNUMERIC()/71512/