加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 如何确定SQL Server中无法转换为(decimal,float,i

发布时间:2020-12-12 16:34:37 所属栏目:MsSql教程 来源:网络整理
导读:我有一个SQL Server数据库. 一个字段有值 ID VALUE 1 NEGATIF 2 11.4 3 0.2 4 A RH(+) 5 ----- 6 7 5.6 8 -13.9 我要将CONVERT VALUE字段转换为十进制,当然可以转换字段. 什么样的SQL语句可以做到这一点? 如何理解在转换时哪个值会引起错误? PS:我认为这可
我有一个SQL Server数据库.

一个字段有值

ID      VALUE
  1      NEGATIF
  2      11.4
  3      0.2
  4      A RH(+)
  5      -----
  6      >>>>>
  7      5.6<
  8      -13.9

我要将CONVERT VALUE字段转换为十进制,当然可以转换字段.

>什么样的SQL语句可以做到这一点?
>如何理解在转换时哪个值会引起错误?

PS:我认为这可以解决像'[a-z]’,但是如何添加像[ – ()]更多的过滤器?

解决方法

平原ISNUMERIC是垃圾

>空字符串,– 和.都是有效的
>那就是等等
> 1e-3对于float而不是十进制有效(除非你将CAST漂浮到十进制)

对于一个特别隐蔽但是故障的解决方案,请附加e0或.0e0,然后使用ISNUMERIC

SELECT
   ISNUMERIC(MyCOl + 'e0')   --decimal check,ISNUMERIC(MyCOl + '.0e0')  --integer check

所以

SELECT
    ID,VALUE,CAST(
          CASE WHEN ISNUMERIC(VALUE + 'e0') = 1 THEN VALUE ELSE NULL END
          AS decimal(38,10)
        ) AS ConvertedVALUE
FROM
    Mytable

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读