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


众所周知,在 MySQL 中 || 运算符默认为逻辑 OR 运算符,但它取决于 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)

上述查询的结果集显示,|| 运算符作为 OR 运算符,因此对于 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 年 6 月 22 日

147 次浏览

开启你的职业之旅

完成课程获得认证

开始
广告