【发布时间】:2017-09-08 05:26:34
【问题描述】:
下面的SQL语句怎么会在MySQL中返回true?
SELECT 'SeP' = 'sęp';
mysql> select 'SeP' = 'sęp';
+----------------+
| 'SeP' = 'sęp' |
+----------------+
| 1 |
+----------------+
1 row in set (0.00 sec)
我的数据库的字符集和排序规则如下。
mysql> select @@character_set_database, @@collation_database, @@collation_connection;
+--------------------------+----------------------+------------------------+
| @@character_set_database | @@collation_database | @@collation_connection |
+--------------------------+----------------------+------------------------+
| utf8mb4 | utf8mb4_general_ci | utf8_general_ci |
+--------------------------+----------------------+------------------------+
1 row in set (0.00 sec)
【问题讨论】:
-
我们必须查看规范,但我认为这两个字符在一般排序规则中被认为是相等的,而不是绑定到任何特定语言是合理的。
-
您可以尝试使用
CASE WHEN来实现此功能。 -
@SagarGangwal 你可以试试,但是用处不大
-
@Jagger 您应该查看
SELECT @@collation_connection;,因为您的查询不使用数据库...您的查询将使用 DUAL 表 -
@RaymondNijland 我刚刚在我的问题中添加了
@@collation_connection。