如何仅查询包含表情符号的数据(postgresql)

6

我有一列包含表情符号的数据存储在数据库中,例如:

message_text
-------


Hi 

我想查询只包含表情符号数据的行,PostgreSQL有简单的方法吗?

select data from table where data_col contains emoji

目前我使用一个简单查询

select message_text from cb_messages_v1 cmv
 where message_text IN ('','','','', '')

但我希望它更具有动态性,如果未来添加了情感数据,它将能够捕获这些数据。


1
你可以像搜索包含单个字符“ A”或“ B”一样搜索多个值。请尝试此链接:https://dev59.com/0Wcs5IYBdhLWcg3wTyNl - O-9
@O-9 这很有帮助,但是如果引入了新的表情符号怎么办?我需要更新我的代码并将其包含进去。有没有一种方法可以不必硬编码所有可能的表情符号列表来实现这一点? - cluis92
1个回答

17

从您的示例中,似乎您不仅对表情符号(U+1F601 - U+1F64F)感兴趣,还对其他符号和图片(U+1F300 - U+1F5FF)以及交通和地图符号(U+1F680 - U+1F6C5)感兴趣。

您可以使用以下方式找到包含其中一个的值

WHERE textcol ~ '[\U0001F300-\U0001F6FF]'

~ 是正则表达式匹配运算符,模式是 Unicode 字符范围。


哇哦...太简单了。不需要我那么长的回答了:D 谢谢,我学到了教训。 - S-Man
你是否知道如何在Python中实现相同的功能呢? - cluis92
就像那样 - SQL 就是 SQL。 - Laurenz Albe
FYI,这不支持所有的表情符号。例如,旗帜表情符号无法被正则表达式检测到。 - pir
1
@pir 嗯,这些是。但我猜这是一个不断变化的目标。我已经扩展了范围到1F6FF。 - Laurenz Albe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接