1

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

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

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

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

4

3 回答 3

1

如果您只想替换'/'withNULL并保留所有其他字符串不变,您可以使用该NULLIF()功能,例如NULLIF(@Lo, '/')

于 2015-02-18T20:26:39.630 回答
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 的常规非空内容出现。如果@L0 上的结果应该是“/”作为“其他字符串”,请使用这个:

 CASE COALESCE(@L0, 'other string') WHEN '/' THEN NULL ELSE COALESCE(@L0, '/') END
于 2015-02-18T19:49:19.910 回答
0

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

CASE COALESCE(@L0, '/') WHEN '/' THEN NULL ELSE @L0 END
于 2015-02-18T19:50:04.583 回答