如何确定我的数据库是否处于稳定状态?

时间:2015-12-15 10:59:25

标签: sql-server-2008

字段"表名"虽然在case-condition

中处理为非null,但它是NULL
select 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 

我的结论是我的数据库出了问题。我怎样才能弄清楚出了什么问题?

1 个答案:

答案 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

CONCAT_NULL_YIELDS_NULL docs