SQL 服务器中具有 NULL 表达式的情况

Case with NULL expression in SQL Server

我对这段代码有疑问,我很确定解决方案很简单,但我没有看到它。

CASE @L0 WHEN '/' THEN NULL ELSE @L0 END

这是我用来从平面文件 (csv) 中导入数据的代码的一部分,其中 NULL 存储为 /。问题是@L0 也可以是另一个程序填充的输入变量,它可能是 NULL。由于不允许在 CASE 中使用 NULL 值作为表达式,代码不起作用,我收到一条错误消息。

谁能告诉我正确的做法?

将 NULL 值映射到“/”或任何其他字符串:

 CASE COALESCE(@L0, '/') WHEN '/' THEN NULL ELSE @L0 END

 CASE COALESCE(@L0, 'other string') WHEN '/' THEN NULL ELSE COALESCE(@L0, 'other string') END

'other string' 当然不应该作为@L0 的常规非空内容出现。如果结果在@L0 上应该是 '/' 作为 'other string',请取这个:

 CASE COALESCE(@L0, 'other string') WHEN '/' THEN NULL ELSE COALESCE(@L0, '/') END

尝试以下操作,如果它为 null,则默认 @L0 为 '/':

CASE COALESCE(@L0, '/') WHEN '/' THEN NULL ELSE @L0 END

如果您只想将 '/' 替换为 NULL 并保持所有其他字符串不变,您可以使用 NULLIF() 函数,例如NULLIF(@Lo, '/')