Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 存在返回错误值的IIF条件_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 存在返回错误值的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

我创建了一个表类型帮助器,因此我创建了一个简单的IIF,其存在条件如下:

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',”)