||运算符的优先级是如何取决于PIPES_AS_CONCAT SQL模式的?


我们知道,在 MySQL 中,|| 运算符默认是逻辑或运算符,但它取决于 PIPES_AS_CONCAT SQL 模式。如果启用了 PIPES_AS_CONCAT SQL 模式,则 || 运算符会用作字符串连接。此时,它的优先级介于 ^ 和一元运算符之间。示例如下:

mysql> Set @C='tutorials';
Query OK, 0 rows affected (0.00 sec)

mysql> Set @D='point';
Query OK, 0 rows affected (0.00 sec)

mysql> Select @C||@D;
+--------+
| @C||@D |
+--------+
|      1 |
+--------+
1 row in set (0.00 sec)

上述查询的结果集显示,|| 用作或运算符,因此 true 的输出为 1。

mysql> Set SQL_MODE = 'PIPES_AS_CONCAT';
Query OK, 0 rows affected (0.10 sec)

启用 PIPES_AS_CONCAT SQL 模式后,|| 用作 CONCAT() 函数的同义词,即字符串连接函数。在以下结果集中显示了这一点:

mysql> Select @C||@D;
+----------------+
| @C||@D         |
+----------------+
| tutorialspoint |
+----------------+
1 row in set (0.00 sec)

更新时间:2020-06-22

148 次浏览

开启您的 职业生涯

完成课程以获得认证

开始
广告
© . All rights reserved.