gpt4 book ai didi

sql-server - SQL Server中如何确定无法转换为(decimal, float,int)的字段值

转载 作者:行者123 更新时间:2023-12-02 06:44:09 25 4
gpt4 key购买 nike

我有一个 SQL Server 数据库。

一个字段的值类似于

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

我想将 VALUE 字段转换为十进制,当然是可转换字段。

  1. 什么样的 SQL 语句可以做到这一点?

  2. 如何了解转换时哪个值引发错误?

PS:我认为这可以解决 WHERE VALUE LIKE '[a-z]' 但如何添加更多过滤器,如 [-+ ()] ?

最佳答案

简单的 ISNUMERIC 是垃圾

  • 空字符串、+-。均有效
  • + 也是如此。
  • 1e-3 对 float 有效,但对小数无效(除非先转换为 float ,然后再转换为小数)

对于特别神秘但故障安全的解决方案,请附加 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

关于sql-server - SQL Server中如何确定无法转换为(decimal, float,int)的字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4522056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com