开发者社区> 问答> 正文

两个值如何相等但又不相等?

当我运行以下查询时:

DECLARE 
    @val VARCHAR(10) = 'not null'
    , @val2 VARCHAR(10) = NULL

IF @val = @val2 SELECT 'not the same' -- Is it equal?
ELSE SELECT 'the same'

IF @val <> @val2 SELECT 'the same' -- Is it not equal?
ELSE SELECT 'not the same'

我得到以下输出:

the same
not the same

请有人可以解释这里发生了什么吗?

展开
收起
心有灵_夕 2019-12-03 22:27:50 807 0
1 条回答
写回答
取消 提交回答
  • 一切正常。在第一个中if @val=@val2,则应打印the same而不是not the same。条件声明后,您应该添加begin和end阻止if。只需检查它下面的工作正常。

    DECLARE 
        @val VARCHAR(10) = 'not null'
        , @val2 VARCHAR(10) = NULL
    
         IF @val = @val2 
         begin
           SELECT 'the same' -- Is it equal?
         end 
         ELSE 
          begin
             SELECT 'not the same'
         end 
         IF @val <> @val2 
         begin 
           SELECT 'the same' -- Is it not equal?
        end
        ELSE 
        begin 
           SELECT 'not the same'
        end
    
    2019-12-03 22:28:26
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载