将 varchar 值转换为十进制,同时将 NULL 和 EMPTY 字符串处理为 0
Converting varchar values to decimal while handling NULLs and EMPTY strings as 0
我有一个 varchar 数据类型的列,其中填充了 1.2、5.33 等混合值,同时还包含 NULL 和 EMPTY 字符串。
我想将所有值转换为十进制,同时将 NULL 和 EMPTY 字符串视为 0。
我可以使用如下所示的 CONVERT 函数更改 NULL 或 EMPTY 字符串。像这样,我将 NULL 和 EMPTY 字符串替换为 varhcar 0.
CASE WHEN Column1 = '' OR Column1= NULL THEN '0' ELSE Column1 END AS 'NewColumn1'
然而,我想要做的是能够将此数据(NewColumn1 的输出)转换为十进制,但是当我将 CASE 语句放入 CONVERT 或 CAST 函数时,我会出错。
我也尝试了以下方法。
CONVERT(DECIMAL(10,4), ISNULL(Column1, '0'))
但是它失败了,因为这里我没有处理 EMPTY 字符串。
有什么办法可以解决这个问题。
简单方法:
SELECT CONVERT(DECIMAL(10, 4), ISNULL(NULLIF(Column1, ''), '0'))
您的 CASE
语句不起作用,因为您在检查 Column1 = NULL
。你应该检查它是否 IS NULL
.
CASE WHEN Column1 = '' OR Column1 IS NULL THEN '0' ELSE Column1 END AS 'NewColumn1'
试试这个,
SELECT CAST(ISNULL(NULLIF(Column1, ''),0) AS DECIMAL(12,2)) FROM table
我有一个 varchar 数据类型的列,其中填充了 1.2、5.33 等混合值,同时还包含 NULL 和 EMPTY 字符串。 我想将所有值转换为十进制,同时将 NULL 和 EMPTY 字符串视为 0。
我可以使用如下所示的 CONVERT 函数更改 NULL 或 EMPTY 字符串。像这样,我将 NULL 和 EMPTY 字符串替换为 varhcar 0.
CASE WHEN Column1 = '' OR Column1= NULL THEN '0' ELSE Column1 END AS 'NewColumn1'
然而,我想要做的是能够将此数据(NewColumn1 的输出)转换为十进制,但是当我将 CASE 语句放入 CONVERT 或 CAST 函数时,我会出错。
我也尝试了以下方法。
CONVERT(DECIMAL(10,4), ISNULL(Column1, '0'))
但是它失败了,因为这里我没有处理 EMPTY 字符串。
有什么办法可以解决这个问题。
简单方法:
SELECT CONVERT(DECIMAL(10, 4), ISNULL(NULLIF(Column1, ''), '0'))
您的 CASE
语句不起作用,因为您在检查 Column1 = NULL
。你应该检查它是否 IS NULL
.
CASE WHEN Column1 = '' OR Column1 IS NULL THEN '0' ELSE Column1 END AS 'NewColumn1'
试试这个,
SELECT CAST(ISNULL(NULLIF(Column1, ''),0) AS DECIMAL(12,2)) FROM table