use*_*236 3 sql t-sql sql-server string sql-convert
我有一列 varchar 数据类型,其中填充了 1.2、5.33 等值的混合,同时还包含 NULL 和 EMPTY 字符串。我想将所有值转换为十进制,同时将 NULL 和 EMPTY 字符串视为 0。
我可以使用 CONVERT 函数更改 NULL 或 EMPTY 字符串,如下所示。像这样,我用 varhcar 0 替换 NULL 和 EMPTY 字符串。
CASE WHEN Column1 = '' OR Column1= NULL THEN '0' ELSE Column1 END AS 'NewColumn1'
Run Code Online (Sandbox Code Playgroud)
然而,我想要做的是能够将此数据(NewColumn1 的输出)转换为十进制,但是当我将 CASE 语句放入 CONVERT 或 CAST 函数中时,我会出现错误。
我也尝试了以下方法。然而,CONVERT(DECIMAL(10,4), ISNULL(Column1, '0'))
失败了,因为这里我不处理空字符串。
任何想法如何解决这个问题。
简单的方法:
SELECT CONVERT(DECIMAL(10, 4), ISNULL(NULLIF(Column1, ''), '0'))
Run Code Online (Sandbox Code Playgroud)
您的CASE
声明不起作用,因为您正在检查 if Column1 = NULL
。你应该检查一下是否是这样IS NULL
。
CASE WHEN Column1 = '' OR Column1 IS NULL THEN '0' ELSE Column1 END AS 'NewColumn1'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13584 次 |
最近记录: |