【问题标题】:What does "<=>" in MySQL mean?MySQL中的“<=>”是什么意思?
【发布时间】:2011-06-01 00:50:51
【问题描述】:

MySQL 中的&lt;=&gt; 是什么意思?

【问题讨论】:

标签: mysql null operators equality


【解决方案1】:

manual 说明了一切:

NULL 安全相等。该运算符 执行相等比较,例如 = 运算符,但返回 1 而不是 如果两个操作数都为 NULL,则为 NULL, 如果有一个操作数,则为 0 而不是 NULL 为 NULL。

mysql> select NULL <=> NULL;
+---------------+
| NULL <=> NULL |
+---------------+
|             1 |
+---------------+
1 row in set (0.00 sec)

mysql> select NULL = NULL;
+-------------+
| NULL = NULL |
+-------------+
|        NULL |
+-------------+
1 row in set (0.00 sec)

mysql> select NULL <=> 1;
+------------+
| NULL <=> 1 |
+------------+
|          0 |
+------------+
1 row in set (0.00 sec)

mysql> select NULL = 1;
+----------+
| NULL = 1 |
+----------+
|     NULL |
+----------+
1 row in set (0.00 sec)

mysql> 

【讨论】:

    【解决方案2】:

    这是NULL-safe equal operator

    和= 之间的区别在于其中一个或两个操作数都是NULL 值。例如:

    NULL <=> NULL gives True
    NULL = NULL   gives NULL
    

    这是&lt;=&gt; 值 1、2 和 NULL 比较的完整表:

    | 1 2 空 -----+-------- 1 |真假假 2 |假 真 假 空 |假 假 真

    与普通的相等运算符比较:

    | 1 2 空 -----+-------- 1 |真假空 2 |假真空 空 |空 空 空

    【讨论】:

      【解决方案3】:

      &lt;=&gt; 是所谓的NULL-safe-equality operator

      SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL; 
      -> 1, 1, 0
      
      SELECT 1 = 1, NULL = NULL, 1 = NULL;
      -> 1, NULL, NULL
      

      【讨论】:

        【解决方案4】:
        【解决方案5】:

        与 SQL 标准关键字 DISTINCT 相同

        SELECT * FROM somewhere WHERE `address1` is not distinct from `address2`
        

        【讨论】:

          猜你喜欢
          • 2023-03-23
          • 1970-01-01
          • 2011-08-12
          • 2017-06-11
          • 2018-03-05
          • 2023-03-27
          • 1970-01-01
          • 1970-01-01
          • 2010-09-29
          相关资源
          最近更新 更多