mysql - MySQL 查询以查找具有肤色变体的表情符号记录
问题描述
我正在研究一些与表情符号相关的 SQL,使用来自 github 上的 emojione 版本(https://github.com/emojione/emojione/releases/tag/4.0.0)的数据。
表情符号被赋予一个 unicode 值 - 例如“城堡”= 1f3f0。
许多表情符号都有肤色变化 - 例如 - 人攀登 () = 1f9d7,但也有 5 种肤色变化:
- - 1f9d7-
1f3fb
- - 1f9d7-
1f3fc
- - 1f9d7-
1f3fd
- - 1f9d7-
1f3fe
- - 1f9d7-
1f3ff
肤色变化由 unicode 值的 1f3fb 部分表示,并且可以如上所示 - 在该表情符号的初始标识符之后,或者有时可以夹在 unicode 值的两个段之间 - 例如,man-mechanic ( ) 的 unicode 值为 1f468-1f527,但随后肤色的 unicode 值如下:
- 男机械师:浅肤色 - 1f468-
1f3fb
-1f527 - 男机械师:中浅肤色 - 1f468-
1f3fc
-1f527 - 男机械师:中等肤色 - 1f468-
1f3fd
-1f527 - 男机械师:中深色皮肤吨- 1f468-
1f3fe
-1f527 - 男机械师:深色肤色 - 1f468-
1f3ff
-1f527
我正在尝试编写一些 SQL 来识别那些具有肤色变化的表情符号。
这是一些示例数据:
select my_data.*
from (select '1f468-1f9b3' unicode_value union all
select '1f468-1f3fb-1f9b3' union all
select '1f468-1f3fc-1f9b3' union all
select '1f468-1f3fd-1f9b3' union all
select '1f468-1f3fe-1f9b3' union all
select '1f468-1f3ff-1f9b3' union all
select '1f474' union all
select '1f474-1f3fb' union all
select '1f474-1f3fc' union all
select '1f474-1f3fd' union all
select '1f474-1f3fe' union all
select '1f474-1f3ff' union all
select '1f98d' union all
select '1f40a' union all
select '1f1fc-1f1f8') my_data;
鉴于上述示例数据,有没有办法只返回这些:
- 1f468-1f9b3
- 1f474
因为它们是唯一具有 5 种肤色变体的记录,这些变体紧接在 unicode 值的第一段之后?
如果不编写函数或复杂的东西,或者将 SQL 与 PHP 等脚本语言结合起来,可能无法实现这一点,但我想在这里问一下。
解决方案
SELECT UNHEX('F09F91A8E2808DF09F94A7');
F09F91A8
= 人
E2808D
= 零宽度细木工
F09F94A7
= 机械师
一些参考资料:
http ://unicode.scarfboy.com/?s=1f3fd
https://codepoints.net/U+1f3fd
http://www.fileformat.info/info/unicode/char/1f3fd/index.htm
MySQL 对 UTF-8 比对 Unicode 代码点更友好。
推荐阅读
- python - 从大量停用词中删除停用词
- xcode - 使用多个故事板文件会增加项目构建时间吗?
- javascript - 如果键名是变量值,则通过 json 键获取 json 值
- c# - 如果某些消费者无法实现接口方法,我应该让接口方法返回任务吗?
- html - 响应式调整父级内的 HTML div 大小,包括信箱和邮筒,仅 CSS
- ruby-on-rails - Rails 扫描 ActiveRecord 以进行属性更改
- java - JScrollPane 不移动它卡在一个位置
- ruby-on-rails - 如何使用关注点在模型上存储自定义类级数据
- python - OSX Python 2二进制干扰python 3
- scrapy - Scrapy FormRequest 在信用卡登录表单上不起作用