我正在研究一些与表情符号相关的 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 等脚本语言结合起来,可能无法实现这一点,但我想在这里问一下。