Sql 存在返回错误值的IIF条件
我创建了一个表类型帮助器,因此我创建了一个简单的IIF,其存在条件如下:Sql 存在返回错误值的IIF条件,sql,sql-server,tsql,Sql,Sql Server,Tsql,我创建了一个表类型帮助器,因此我创建了一个简单的IIF,其存在条件如下: DECLARE @CustomerNameTableType [Helper].[VarcharIdTableType] INSERT INTO @CustomerNameTableType VALUES(''); DECLARE @HasCustomerName BIT = (IIF(EXISTS (SELECT [Id] FRO
DECLARE @CustomerNameTableType [Helper].[VarcharIdTableType]
INSERT INTO @CustomerNameTableType VALUES('');
DECLARE @HasCustomerName BIT = (IIF(EXISTS (SELECT [Id]
FROM @CustomerNameTableType
WHERE [Id] != 'Any'
OR [Id] != '') , 1 , 0));
SELECT @HasCustomerName
如您所见,我正在插入值'
,但@HasCustomerName
的结果应该是0,因为我有条件
WHERE [Id] != 'Any' OR [Id] != ''
有人能解释我为什么得到结果=1吗?关于我认为您需要在中使用
:
DECLARE @CustomerNameTableType [Helper].[VarcharIdTableType]
INSERT INTO @CustomerNameTableType VALUES('');
DECLARE @HasCustomerName BIT = (IIF(EXISTS (SELECT [Id]
FROM @CustomerNameTableType
WHERE [Id] NOT IN( 'Any','')
) , 1 , 0));
SELECT @HasCustomerName
我认为您需要在
中使用:
DECLARE @CustomerNameTableType [Helper].[VarcharIdTableType]
INSERT INTO @CustomerNameTableType VALUES('');
DECLARE @HasCustomerName BIT = (IIF(EXISTS (SELECT [Id]
FROM @CustomerNameTableType
WHERE [Id] NOT IN( 'Any','')
) , 1 , 0));
SELECT @HasCustomerName
FWIW,使用
而不是=代码>。此外,该条件始终为真。。用重写它,它的不在([Id]=“Any”和[Id]=“Any”)
。现在很明显,[Id]不能同时为“Any”和“Any”。伪造SQL语法,即:WHERE NOT(FALSE)
->WHERE TRUE
可能需要的条件是其中[Id]'Any'和[Id]'
?如果是这样的话,我会(再次通过DM)将其写成WHERE NOT([Id]=“Any”或[Id]=“code>)
,或者,现在可以相对容易地可视化,简化为:WHERE[Id]NOT IN('Any',”)
。FWIW,使用
而不是=代码>。此外,该条件始终为真。。用重写它,它的不在([Id]=“Any”和[Id]=“Any”)
。现在很明显,[Id]不能同时为“Any”和“Any”。伪造SQL语法,即:WHERE NOT(FALSE)
->WHERE TRUE
可能需要的条件是其中[Id]'Any'和[Id]'
?如果是这样的话,我会(再次通过DM)将其写为WHERE NOT([Id]=“Any”或[Id]=“Any”)
或者,现在可以相对容易地可视化,简化为:WHERE[Id]NOT IN('Any',”)
。