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 类型以避免将来出现这种情况。但这有点超出你的问题范围。

当然,您不能总是更改数据类型。如果可以,那么这将是一个更永久的解决方案。