我对这段代码有疑问,我很确定解决方案很简单,但我没有看到。
CASE @L0 WHEN '/' THEN NULL ELSE @L0 END
它是我用来从平面文件 (csv) 中导入数据的代码的一部分,其中 NULL 存储为 /。问题是@L0 也可以是由另一个程序填充的输入变量,并且它可能为 NULL。由于不允许在 CASE 中使用 NULL 值作为表达式,因此代码不起作用并且我收到一条错误消息。
有人可以告诉我如何以正确的方式做到这一点吗?
我对这段代码有疑问,我很确定解决方案很简单,但我没有看到。
CASE @L0 WHEN '/' THEN NULL ELSE @L0 END
它是我用来从平面文件 (csv) 中导入数据的代码的一部分,其中 NULL 存储为 /。问题是@L0 也可以是由另一个程序填充的输入变量,并且它可能为 NULL。由于不允许在 CASE 中使用 NULL 值作为表达式,因此代码不起作用并且我收到一条错误消息。
有人可以告诉我如何以正确的方式做到这一点吗?
如果您只想替换'/'
withNULL
并保留所有其他字符串不变,您可以使用该NULLIF()
功能,例如NULLIF(@Lo, '/')
将 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
尝试以下操作,@L0
如果它为空,则默认为 '/':
CASE COALESCE(@L0, '/') WHEN '/' THEN NULL ELSE @L0 END