工作小插曲
今天在做数据分析时出现了一个小问题:在统计金额总数时的问题。
根据我从业这么多天的 “资深经验” ,一般出现这个错误是由两个原因。
第一种,有空值。这应该是varchar类型的值有个别为空,但是是用“NULL”表示的,所以才会出现这个错误。经过排查判断,不是这个原因。
第二种我认为可能是有个别的存在英文或者别的字符,于是我就使用了:
SELECT * from [表名] WHERE PATINDEX('%[^0-9]%',[列名]) != 0
进行判断。得出的结果让我傻眼 =-=!(图中应该是 !=0 去判断问题行)
总共37w行,排除掉图中的23W行没问题的,剩下14w+的问题行,根本没法去对。
(其实这里包含了负数的负号“-”和小数的小数点“.”,都算了进去,才会有这么多。正确的应该在正表里这么写:’%[^0-9|\.|\-]%’。这之后我又试验了一下,总共才58行问题行。)
后来我到网上搜索,发现可以用ISNUMERIC去判断是否为有效的可计算值,我就赶忙实践一下,结果让人心碎ÿ