SQL case 语句然后转换为 int
SQL case statement then convert to int
我有一个要转换为 int
的字段,这样我就可以转换为 count
,但是该字段的某些值是 'null'
,所以我遇到了异常当遇到这些
Conversion failed when converting the nvarchar value '_____' to data type int.
我认为 id 可以执行类似下面的操作,但我得到了相同的结果。
CAST( CASE [value] WHEN 'is null' THEN 1 ELSE [value] END AS INT)
我想将 [value] 中的所有 null
值更改为 1,然后将所有 [value] 更改为 int
这样我就可以计算这个字段了。
它将是 is null
不是字符串
CAST( (CASE WHEN [value] is null THEN 1 ELSE [value] END) AS INT)
但最好使用 try_convert @Gordon 推荐的
将 NULL
值转换为 int
应该没有问题,所以我假设问题是字符串 'NULL'
.
SQL 服务器提供 TRY_CONVERT()
。我建议你使用它;
select try_convert(int, [value])
在其他数据库中,您可以使用正则表达式来验证数据。
因为您实际上并不是在寻找 NULL
-- 即缺少数据。您有错误数据,即列中的实际文本 'NULL'
。
我实际上建议您将所有值更新为 NULL
,这样您就可以避免尝试转换数据来解决您的问题。那将是这样的:
UPDATE yourtable
SET [value] = NULL
WHERE [value] = 'NULL'
然后我也会将该列更改为真正的 INT
类型以避免将来出现这种情况。但这有点超出你的问题范围。
当然,您不能总是更改数据类型。如果可以,那么这将是一个更永久的解决方案。
我有一个要转换为 int
的字段,这样我就可以转换为 count
,但是该字段的某些值是 'null'
,所以我遇到了异常当遇到这些
Conversion failed when converting the nvarchar value '_____' to data type int.
我认为 id 可以执行类似下面的操作,但我得到了相同的结果。
CAST( CASE [value] WHEN 'is null' THEN 1 ELSE [value] END AS INT)
我想将 [value] 中的所有 null
值更改为 1,然后将所有 [value] 更改为 int
这样我就可以计算这个字段了。
它将是 is null
不是字符串
CAST( (CASE WHEN [value] is null THEN 1 ELSE [value] END) AS INT)
但最好使用 try_convert @Gordon 推荐的
将 NULL
值转换为 int
应该没有问题,所以我假设问题是字符串 'NULL'
.
SQL 服务器提供 TRY_CONVERT()
。我建议你使用它;
select try_convert(int, [value])
在其他数据库中,您可以使用正则表达式来验证数据。
因为您实际上并不是在寻找 NULL
-- 即缺少数据。您有错误数据,即列中的实际文本 'NULL'
。
我实际上建议您将所有值更新为 NULL
,这样您就可以避免尝试转换数据来解决您的问题。那将是这样的:
UPDATE yourtable
SET [value] = NULL
WHERE [value] = 'NULL'
然后我也会将该列更改为真正的 INT
类型以避免将来出现这种情况。但这有点超出你的问题范围。
当然,您不能总是更改数据类型。如果可以,那么这将是一个更永久的解决方案。