工作小插曲

今天在做数据分析时出现了一个小问题:在统计金额总数时的问题。
根据我从业这么多的 “资深经验” ,一般出现这个错误是由两个原因。
第一种,有空值。这应该是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时出错” 的小插曲相关推荐

  1. 从数据类型 varchar 转换为 numeric 时出错

    概述 在SQL server环境查询的时候,出现,从数据类型 varchar 转换为 numeric 时出错. 报错图片 先说解决办法 Select cast(字段 as 数据类型) from 表名 ...

  2. 从数据类型 varchar 转换为 numeric 时出错.

    如果说你的数据库字段是varchar,但是存储的数据是数值,在出报表时需要转成int或numeric时,无论怎么样都报错. 错误信息: 消息 8114,级别 16,状态 5,第 1 行 从数据类型 v ...

  3. numeric转换varchar_将数据类型varchar转换为numeric时选择失败

    我的选择是从 table 1 插入到 table 2 ,当我运行它时,我收到以下消息: 消息8114,级别16,状态5,行5错误将数据类型varchar转换为数字 . 我从varchar转换为nume ...

  4. 存储过程传递参数时出现类型转换错误!如:varchar转换为int时出错

    碰到过这个问题:当时的程序大致如下: create procedure myproc @tablename varchar(20), @idnum int as declare @sqlstr var ...

  5. SQL server报错42000 - [SQL Server]从数据类型 varchar 转换为 int 时出错。

    原因,调用存储过程时必须按照定义数据的顺序传数据,不然就出错,这里出错时因为存储过程定义的第一个参数是int,我传值的时候传的是其他varchar属性的字段值,没有按照存储过程定义的字段顺序进行传值. ...

  6. nvarchar转换为numeric时出错_Oracle转换Postgres

    1.前提 首先需要对Oracle和PostgreSQL的SQL都比较熟悉.对其理解的越详细就越具有优势,本文帮助读者迅速理解这两类SQL的区别是什么. 如果因ACS/pg而需要将Oracle移植到PG ...

  7. 从数据类型 nvarchar 转换为 numeric 时出错_Python数据分析类库系列Numpy之ndarray的数据类型...

    dtype(数据类型)是一个特殊的对象,它含有ndarray将一块内存解释为特定数据类型所需的信息: arr1 = np.array([1, 2, 3,],dtype = np.float64)arr ...

  8. 从数据类型 nvarchar 转换为 numeric 时出错_JS入门篇(三):javascript的数据类型详解...

    JavaScript的数据类型分为两大类,基本数据类型和复杂数据类型. 基本数据类型:Undefined.Null.Boolean.Number.String. 复杂数据类型:Object. (1)U ...

  9. sql加载配置文件时出错:_SQL复制:基本设置和配置

    sql加载配置文件时出错: This is article is a continuation of the previous: SQL Server replication: Overview of ...

最新文章

  1. MP3 编码解码 附完整c代码
  2. 开源网络备份软件bacula(安装bacula)
  3. 转:Siri之父:语音交互或将主导未来十年发展
  4. MCU VR班會(06)記錄
  5. PHP程序员的技术成长规划(转)
  6. 小旭的互联网营销之微信营销
  7. MySQL表、索引大小查询
  8. 学fpga(在线verilog编程)
  9. 将n划分成最大数不超过m的划分数
  10. 算法的时间复杂度和空间复杂度详解
  11. drupal与html转换,HTML转Drupal主题的方法
  12. 计算机网络:广域网的基本概念
  13. 关于滚动贯穿的解决方案
  14. python 爬取数据(CBA所有球队数据) -爬虫
  15. java二维码生成工具,可直接用于生产
  16. [ISSUE]angularjs resolve: $injector:unpr] Unknown provider:
  17. java去除符号和字母_java 字符串中去除 数字 字母 符号N*1*senten.Length=M*M
  18. Linux mail命令使用和sendmail配置
  19. 蓝桥杯真题(路径)C语言
  20. 机器学习算法(二十六):文本表示模型

热门文章

  1. 基于Skeleton的手势识别:SAM-SLR
  2. 信息收集之zoomeye
  3. ARM Cortex-A系列编程指南之ARMv8 A -- 第二章 ARMv8 A架构和处理器
  4. intersect的用法
  5. Tolua使用笔记一:开始使用Tolua的准备工作与lua文件读取方法
  6. 使用Java实现平衡二叉树
  7. 网络课笔记整理——物理层
  8. tensorflow2: attention机制实现
  9. VB.NET中IIF和IF使用效率分析
  10. matlab反插值,matlab反距离权重插值