SQL Case WHERE 条件,如果条件通过检查值是否不为空
SQL Case WHERE condition, if condition passes check if value is not null
我不知道如何添加最后一个条件。
这是动态代码+游标的一部分。游标由 table 列的列表组成。我正在比较结构相同的两个 table 中的值,在 PK 上加入它们,并在值不匹配时一次检查一列。
我最后一个条件需要的是:
- 如果@columnName 是 'untCode'
- 然后我想排除那些 TMC.untCode 为空的行
- 否则此条件不适用
DECLARE @columnName CHAR(10) = 'untcode';
SELECT MC.@columnName, TMC.@columnName
FROM dbo.firstable AS TMC
INNER JOIN dbo.secondtable AS MC
ON MC.ID = TMC.ID
AND MC.Code = TMC.Code
WHERE MC.ID = 123
AND TMC.@columnName<> MC.@columnName
--How do I add this??
AND TMC.@columnName CASE
WHEN @columnName='untCode' THEN not null
ELSE --What???
END ;
感谢帮助
如你所说:
--How do I add this??
AND NOT (@columnName='untCode' AND TMC.untCode is NULL)
或稍作改动:
--How do I add this??
AND (@columnName<>'untCode' OR TMC.untCode is NOT NULL)
但是你应该像@Larnu 说的那样更正 AND TMC.@columnName<> MC.@columnName
;你是说 AND TMC.columnName=MC.columnName`?
我不知道如何添加最后一个条件。 这是动态代码+游标的一部分。游标由 table 列的列表组成。我正在比较结构相同的两个 table 中的值,在 PK 上加入它们,并在值不匹配时一次检查一列。 我最后一个条件需要的是:
- 如果@columnName 是 'untCode'
- 然后我想排除那些 TMC.untCode 为空的行
- 否则此条件不适用
DECLARE @columnName CHAR(10) = 'untcode';
SELECT MC.@columnName, TMC.@columnName
FROM dbo.firstable AS TMC
INNER JOIN dbo.secondtable AS MC
ON MC.ID = TMC.ID
AND MC.Code = TMC.Code
WHERE MC.ID = 123
AND TMC.@columnName<> MC.@columnName
--How do I add this??
AND TMC.@columnName CASE
WHEN @columnName='untCode' THEN not null
ELSE --What???
END ;
感谢帮助
如你所说:
--How do I add this??
AND NOT (@columnName='untCode' AND TMC.untCode is NULL)
或稍作改动:
--How do I add this??
AND (@columnName<>'untCode' OR TMC.untCode is NOT NULL)
但是你应该像@Larnu 说的那样更正 AND TMC.@columnName<> MC.@columnName
;你是说 AND TMC.columnName=MC.columnName`?