SQL “varchar转换为numeric时出错” 的小插曲
工作小插曲
今天在做数据分析时出现了一个小问题:在统计金额总数时的问题。
根据我从业这么多天的 “资深经验” ,一般出现这个错误是由两个原因。
第一种,有空值。这应该是varchar类型的值有个别为空,但是是用“NULL”表示的,所以才会出现这个错误。经过排查判断,不是这个原因。
第二种我认为可能是有个别的存在英文或者别的字符,于是我就使用了:
SELECT * from [表名] WHERE PATINDEX('%[^0-9]%',[列名]) != 0
进行判断。得出的结果让我傻眼 =-=!(图中应该是 !=0 去判断问题行)
总共37w行,排除掉图中的23W行没问题的,剩下14w+的问题行,根本没法去对。
(其实这里包含了负数的负号“-”和小数的小数点“.”,都算了进去,才会有这么多。正确的应该在正表里这么写:’%[^0-9|\.|\-]%’。这之后我又试验了一下,总共才58行问题行。)
后来我到网上搜索,发现可以用ISNUMERIC去判断是否为有效的可计算值,我就赶忙实践一下,结果让人心碎:
(可以到这个连接去看:ISNUMERIC函数判断)
结果为空!说明都符合可计算内容。我就奇了怪了为什么会出现这个错误?根据以往,这个一般都是为空,顶多就是包含一些字符,这让我迷茫了起来。突发灵感,既然是计算钱,那么我把数据转换成“money”格式是否可以呢?我又一次去实践了一下。本不抱有任何希望但结果却让人出乎意料:
有结果了!莫名其妙!(因为对于数据库的数据类型了解得不够多,所以money和decimal两个类型的区别并不知道)
没办法我只能人工排除了,通过排序,在多次测试,最终锁定了问题行的这个值:
因情况特殊不能显示任何内容,我就简单的表示了一下。
(⊙o⊙)?怎么还出现了 “,” ??!我突然明白了为什么money是可用的,因为 “,” 是表示位数分割,这下问题找到了就可以解决了。通过replace把 “,” 替换成 “” 就可以了。
至此这个小插曲就结束了。总结一下,以前遇到的这些金钱的表示都是直接数字和小数点。不会有逗号作为分隔符在数字中,所以没有考虑过这个问题。以后在遇到这种“数据转换类型出错“的情况,就会多一种验证方式了!
SQL “varchar转换为numeric时出错” 的小插曲相关推荐
- 从数据类型 varchar 转换为 numeric 时出错
概述 在SQL server环境查询的时候,出现,从数据类型 varchar 转换为 numeric 时出错. 报错图片 先说解决办法 Select cast(字段 as 数据类型) from 表名 ...
- 从数据类型 varchar 转换为 numeric 时出错.
如果说你的数据库字段是varchar,但是存储的数据是数值,在出报表时需要转成int或numeric时,无论怎么样都报错. 错误信息: 消息 8114,级别 16,状态 5,第 1 行 从数据类型 v ...
- numeric转换varchar_将数据类型varchar转换为numeric时选择失败
我的选择是从 table 1 插入到 table 2 ,当我运行它时,我收到以下消息: 消息8114,级别16,状态5,行5错误将数据类型varchar转换为数字 . 我从varchar转换为nume ...
- 存储过程传递参数时出现类型转换错误!如:varchar转换为int时出错
碰到过这个问题:当时的程序大致如下: create procedure myproc @tablename varchar(20), @idnum int as declare @sqlstr var ...
- SQL server报错42000 - [SQL Server]从数据类型 varchar 转换为 int 时出错。
原因,调用存储过程时必须按照定义数据的顺序传数据,不然就出错,这里出错时因为存储过程定义的第一个参数是int,我传值的时候传的是其他varchar属性的字段值,没有按照存储过程定义的字段顺序进行传值. ...
- nvarchar转换为numeric时出错_Oracle转换Postgres
1.前提 首先需要对Oracle和PostgreSQL的SQL都比较熟悉.对其理解的越详细就越具有优势,本文帮助读者迅速理解这两类SQL的区别是什么. 如果因ACS/pg而需要将Oracle移植到PG ...
- 从数据类型 nvarchar 转换为 numeric 时出错_Python数据分析类库系列Numpy之ndarray的数据类型...
dtype(数据类型)是一个特殊的对象,它含有ndarray将一块内存解释为特定数据类型所需的信息: arr1 = np.array([1, 2, 3,],dtype = np.float64)arr ...
- 从数据类型 nvarchar 转换为 numeric 时出错_JS入门篇(三):javascript的数据类型详解...
JavaScript的数据类型分为两大类,基本数据类型和复杂数据类型. 基本数据类型:Undefined.Null.Boolean.Number.String. 复杂数据类型:Object. (1)U ...
- sql加载配置文件时出错:_SQL复制:基本设置和配置
sql加载配置文件时出错: This is article is a continuation of the previous: SQL Server replication: Overview of ...
最新文章
- MP3 编码解码 附完整c代码
- 开源网络备份软件bacula(安装bacula)
- 转:Siri之父:语音交互或将主导未来十年发展
- MCU VR班會(06)記錄
- PHP程序员的技术成长规划(转)
- 小旭的互联网营销之微信营销
- MySQL表、索引大小查询
- 学fpga(在线verilog编程)
- 将n划分成最大数不超过m的划分数
- 算法的时间复杂度和空间复杂度详解
- drupal与html转换,HTML转Drupal主题的方法
- 计算机网络:广域网的基本概念
- 关于滚动贯穿的解决方案
- python 爬取数据(CBA所有球队数据) -爬虫
- java二维码生成工具,可直接用于生产
- [ISSUE]angularjs resolve: $injector:unpr] Unknown provider:
- java去除符号和字母_java 字符串中去除 数字 字母 符号N*1*senten.Length=M*M
- Linux mail命令使用和sendmail配置
- 蓝桥杯真题(路径)C语言
- 机器学习算法(二十六):文本表示模型