方案1:ISNUMERIC
函数
数字类型返回 1 ,非返回 0
select ISNUMERIC ( '.12321' ) isNum;
select ISNUMERIC ( '.123aa21' ) isNum;
1
0
方案2:PATINDEX
正则
数字类型返回0,非返回1
对负数、负小数,暂未研究,后期补上。
select PATINDEX ( '%[^0-9]%' , '12321' );
select PATINDEX ( '%[^0-9]%' , '.12321' );
select PATINDEX ( '%[^0-9]%' , '.123aa21');
select PATINDEX ( '%[^0-9.]%' , '.12321' );
0
1
1
0
参考资料:
- https://blog.csdn.net/fox009521/article/details/78918811(该链接中,对ISNUMERIC有一点误解,也可能是该函数被优化过)