我遇到过数据库从一台服务器迁移到另一台服务器导致表情符号消失的情况。所以我必须找到原始表中包含高 utf8(表情符号)字符的所有行。
此查询按预期工作:
SELECT field FROM `table` WHERE HEX(field) RLIKE "^(..)*F.";
Run Code Online (Sandbox Code Playgroud)
在做任何事情之前,请检查您是否在数据库、表和连接上使用 utf8mb4:
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+--------------------------+--------------------+
Run Code Online (Sandbox Code Playgroud)
dan*_*era -1
在我看来,简单的方法是创建一个包含所有表情符号代码的表,然后通过条件连接like到您的表。
我这里分享一下如何在mysql上插入表情:
create table emojis (
e varchar(100) COLLATE utf8mb4_unicode_ci
);
insert into emojis values
( _utf8mb4 0xF09F9881 COLLATE utf8mb4_unicode_ci),
( _utf8mb4 '' );
Run Code Online (Sandbox Code Playgroud)
最终查询应如下所示:
select distinct yt.id
from your_table yt
inner join emojis e
on yt.some_column like '%' + e.e + '%'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3723 次 |
| 最近记录: |