比较意味着什么,为什么它不显示真实也不虚假?

时间:2015-09-01 13:29:20

标签: 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

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

3 个答案:

答案 0 :(得分:4)

select @aa = @bbSET @aa = @bb

之类的作业

使用IIF SELECT IIF(@aa = @bb, 'Same', 'Different')

进行比较

<强> SqlFiddleDemo

不平等SELECT IIF(@aa <> @bb, 'Different', 'Same')

在一般SELECT IIF((condition), 1, 0)中,1为真,0为假。

答案 1 :(得分:2)

在查询中进行比较:

select
    case 
        when @aa = @bb then 'MATCH'
        else 'NOT MATCH'
    end

你正在做的事情:

select @aa, @bb

以上选择存储在变量中的两个值作为单独的“列”。

select @aa = @bb

以上设置变量@aa等于@bb的值。

答案 2 :(得分:1)

您不是在比较变量,而是在分配变量。 =运算符将分配值。

您可以尝试这样:

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