用空值替换NULL(SQL Server)

Phi*_*l K 1 sql sql-server

将NULL值替换为空白值

尝试使用CASE语句将NULL转换为空白值时。

注意:sampCol是数字ID

,CASE WHEN sampCol IS NULL THEN '' ELSE sampCol END as sampCol
Run Code Online (Sandbox Code Playgroud)

我不断收到以下错误:

将数据类型varchar转换为数字时出错。

Sea*_*nge 5

这是因为 case 表达式可以根据数据类型的优先级返回一种且唯一的数据类型。您不能将空字符串转换为数字数据类型。您尝试做的事情听起来像是属于表示层,而不是数据层。让 NULL 发生!!!


Joh*_*tti 5

您正在混合数字和字符串值。

NULL不是空字符串。这是价值的缺失。

这样的项目实际上应该降级到表示层,但是如果必须的话,请尝试以下作弊方法。

...
, concat('',sampCol) as sampCol 
...
Run Code Online (Sandbox Code Playgroud)

  • “应该真正降级到表示层” << << 100%同意。(致原始问题的人...请从您的数据层中获取此伏都教转换。这是一个表示问题。 (2认同)
  • 尽管这样做确实可行,但现在确实意味着10 <2,这是错误的。需要注意的是这里。这不属于RDBMS方面。但这绝对不应该放在`WHERE` @PhilK中。它将破坏您查询的任何性能。 (2认同)