javascript - 如何检测 Snowflake VARCHAR 中的表情符号?

标签 javascript sql regex snowflake-cloud-data-platform emoji

我有一个 1B 行的聊天消息表,其中包含一个用于原始消息文本的最大 VARCHAR 列。我如何能 -

  • 仅选择包含 1 个或多个表情符号字符的行
  • 有效过滤掉没有表情符号的行(如果需要提高性能)
  • 最佳答案

    结合 Lukasz 和 Greg 共享的知识,再加上发现一个额外的隐藏 Angular 色,我可以提出这个解决方案:

  • 1 个检测表情符号存在的 JS UDF。
  • 1 个 JS UDF,检测字符串是否只是表情符号。

  • create or replace function has_emoji(X text)
    returns boolean
    language javascript
    as $$
    return /\p{Extended_Pictographic}/u.test(X);
    $$;
    
    create or replace function only_emoji(X text)
    returns boolean
    language javascript
    as $$
    return /^[\p{Extended_Pictographic}\p{Emoji_Component}]+$/u.test(X);
    $$;
    
    sample 用途:
    with data as (
      select $1 t
      from values('❄️'),('❄️ is the data ☁️'),('no emoji')
    )
    
    select *, has_emoji(t), only_emoji(t)
    from data
    ;
    
    enter image description here
    --
    一些研究:
  • '❄️'.replace(/\p{Extended_Pictographic}/ug, '')返回 ''
  • 但是 '❄️'.replace(/\p{Extended_Pictographic}/ug, '')不等于 ''
  • 原来还有隐藏的字符需要替换,匹配Emoji_Component

  • enter image description here

    关于javascript - 如何检测 Snowflake VARCHAR 中的表情符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69931949/

    相关文章:

    javascript - 用背景颜色智能地填充 Bootstrap 列

    java正则表达式拆分字符串

    javascript - jQuery .on() 或 JavaScript :function()?

    php - 如何比较从文本框插入的日期与 MYSQL 数据库中的日期

    javascript - 用 map 打印 react 组件内的数字?

    sql - 无效列? SQL Server 2012

    sql - 从另一个表中选择具有最大日期的数据

    用于单词边界的 JavaScript 正则表达式,允许单词内的连字符和撇号

    javascript - 如何将空的itext添加到我在fabricjs中单击鼠标的 Canvas ?

    javascript - 如何使用 JavaScript 更改表格的单个单元格