SQL Server中具有NULL表达式的大小写

时间:2015-02-18 19:46:36

标签: sql-server expression case coalesce nullif

我对这段代码有疑问,我非常确定解决方案非常简单,但我不会看到它。

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

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

有人可以告诉我如何以正确的方式做到这一点吗?

3 个答案:

答案 0 :(得分:1)

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

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

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

'其他字符串'当然不应该作为@ L0的常规非null内容出现。如果结果应该是' /'在@ L0是'其他字符串',取这个:

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

答案 1 :(得分:1)

如果您只想将'/'替换为NULL并保持所有其他字符串不变,则可以使用NULLIF()功能,例如NULLIF(@Lo, '/')。 {{1}}

答案 2 :(得分:0)

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

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