Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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 比较意味着什么,为什么不是';这不是真假吗?_Sql_Sql Server - Fatal编程技术网

Sql 比较意味着什么,为什么不是';这不是真假吗?

Sql 比较意味着什么,为什么不是';这不是真假吗?,sql,sql-server,Sql,Sql Server,我正在尝试以下操作,正如预期的那样,我得到了两列值 declare @aa varchar(10) = 'bb' declare @bb varchar(10) = 'aa' select @aa, @bb 然后我尝试了以下方法,但我无法解释结果。除了命令成功执行外,我什么也看不到 declare @aa varchar(10) = 'bb' declare @bb varchar(10) = 'aa' select @aa = @bb 我在这里做了什么?我期待一个真/假或一/零或一个错误。

我正在尝试以下操作,正如预期的那样,我得到了两列值

declare @aa varchar(10) = 'bb'
declare @bb varchar(10) = 'aa'
select @aa, @bb
然后我尝试了以下方法,但我无法解释结果。除了命令成功执行外,我什么也看不到

declare @aa varchar(10) = 'bb'
declare @bb varchar(10) = 'aa'
select @aa = @bb

我在这里做了什么?我期待一个真/假或一/零或一个错误。

select@aa=@bb
是类似于
SET@aa=@bb

使用
选择IIF进行比较(@aa=@bb,‘相同’、‘不同’)

不平等
选择IIF(@aa@bb,'Different','Same')


通常
选择IIF((条件),1,0)
其中1为真,0为假。

要在查询中进行比较:

select
    case 
        when @aa = @bb then 'MATCH'
        else 'NOT MATCH'
    end
你在做什么:

select @aa, @bb
上面选择存储在变量中的两个值作为单独的“列”


上述设置变量
@aa
等于
@bb

的值。您不是在比较变量,而是在分配变量操作员将分配值

declare @aa varchar(10) = 'bb'
declare @bb varchar(10) = 'aa'
select @aa, @bb
您可以这样尝试:

declare @aa varchar(10) = 'bb'
declare @bb varchar(10) = 'aa'
if(@aa = @bb)
    print  'Match'
else
    print  'Not Match'
或者更紧凑地使用
IIF

SELECT IIF(@aa = @bb, 'Match', 'Not Match')

我在等号处发现语法错误。对于除我之外的其他DBs,它是否可能是有效的命令(即IFF)?我正在使用SQLServer14。我假设这样一个基本的操作在所有版本中都应该有相同的语法,但假设它部分是基于ass构建的,这就是我可能的…@KonradViltersten看到我的更新答案,我附上了一个实时演示。接下来的问题是-如果我想比较字符串,但是关于相等但不相等,该怎么办?假设我想比较一下,第一个字母是否在第二个字母之前。在when条件中使用不平等符号可以吗?还是以后会产生问题?