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, '/')
我对这段代码有疑问,我很确定解决方案很简单,但我没有看到它。
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, '/')