字段"表名"虽然在case-condition
中处理为非null,但它是NULLselect Name,TableName,
case when rv.TableName is null
then rv.Name
else rv.Name + ' (' + rv.TableName + ')'
end as NewName
FROM RV_Type12 rv
where TypeID = 1012
这是输出:
Name |TableName|NewName
Nav Bar|NULL |Nav Bar (NULL)
NewName应仅包含" Nav Bar"因为Tablename为NULL
此测试运行正确:
DECLARE @t1 TABLE (
Name1 varchar(50),
Name2 varchar(50)
);
INSERT INTO @t1 (Name1, Name2) VALUES('Var1','Value1')
INSERT INTO @t1 (Name1, Name2) VALUES('Var2',NULL)
SELECT Name1,
CASE WHEN Name2 = '' OR Name2 IS NULL
THEN Name1
ELSE Name1 + ' (' + Name2 + ')'
END AS Name2
FROM @t1
我的结论是我的数据库出了问题。我怎样才能弄清楚出了什么问题?
答案 0 :(得分:0)
您正在看NULL
,但是该文本的字符串不是空值
当然,请选择选择:
select * from RV_Type12 where upper(TableName) = 'NULL'
要纠正错误:
update RV_Type12 set TableName = null where upper(TableName) = 'NULL'
我扣除了这一点,因为根据您在CONCAT_NULL_YIELDS_NULL上设置的内容,您获得了孔连接的null
值或空值为''
的空值。所以你永远不会在串联中看到NULL