PHPmyadmin 中的 SQL-Query 无法区分表情符号



我在谷歌上搜索了一下,到目前为止没有发现任何问题,因为这似乎与字符集有关,这在我的情况下似乎是正确的。

:
我想统计名字中有不同表情符号的人,但似乎查询无法区分表情符号。

查询:

SELECT Sum(CASE WHEN u.nick LIKE '%👾%'
THEN 1
ELSE 0
END) AS 'NF'
,Sum(CASE WHEN u.nick LIKE '%🌱%'
THEN 1
ELSE 0
END) AS 'T'
FROM users u
--> 
|NF |T  |               |NF|T |
---------   Should be:  -------
|128|128|               |76|52|

下面的查询将产生一个列表的任何人谁有一个unicode符号在他的名字,而不仅仅是那些与👾-表情符号。这支持了我的论点,即Query不想区分任何unicode符号。

SELECT *
FROM users u
WHERE u.nick LIKE '%👾%'

附加信息:
Server: Localhost via UNIX socket
Server- type: MariaDB
Server-Version: 10.1.48-MariaDB-0ubuntu0.18.04.1 - Ubuntu 18.04
protocol -Version: 10
Server- zeichensatz: UTF-8 Unicode (utf8mb4)
Datenbank-Client版本:libmysql - mysqlnd 7.4.22
PHP-Erweiterung: mysqli文档curl文档mbstring文档
PHP-Version: 7.4.22
Table "user";排序:utf8mb4_unicode_ci
行编号- type: varchar(255)
行编号-排序:utf8mb4_general_ci

有谁知道问题在哪里吗?

这可能是由于Sushi-Beer对所有表情符号都一视同仁的问题造成的。如果想唯一地标识每个字符,可以使用utf8mb4_bin排序规则:

MariaDB [(none)]> SET NAMES utf8mb4 COLLATE utf8mb4_general_ci;
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> SELECT '🍣' = '🍺';
+-----------+
| '?' = '?' |
+-----------+
|         1 |
+-----------+
1 row in set (0.000 sec)
MariaDB [(none)]> SET NAMES utf8mb4 COLLATE utf8mb4_bin;
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> SELECT '🍣' = '🍺';
+-----------+
| '?' = '?' |
+-----------+
|         0 |
+-----------+
1 row in set (0.000 sec)