【问题标题】:How to find a word that starts with a special letter and end with a special letter in SQL, Regular Expression/REGEX如何在SQL,正则表达式/REGEX中查找以特殊字母开头并以特殊字母结尾的单词
【发布时间】:2021-12-29 04:59:09
【问题描述】:

我现在尝试学习 SQL 和 Regex 来分析谷歌数据工作室中的数据。我试图找到解决问题的方法,但在网上找不到任何解决方案。我有一个带有搜索查询的数据源,我想将所有包含公司名称的查询标记为“品牌”。这部分很简单。我只是写了以下内容来完成它:

case
when REGEXP_MATCH(Query, '.*flnk.*') THEN 'Branded'
ELSE 'Non-branded'
END

但现在我还想将所有包含公司名称但拼写错误的搜索查询标记为“品牌”。所以我尝试了以下方法:

case
when REGEXP_MATCH(Query, '^[f].*[k]$') THEN 'Branded'
ELSE 'Non-branded'
END

但是使用这段代码,我得到了很多错误的标记查询,因为它标记了所有以 f 开头并以 k 结尾的字符串。所以我的问题是我怎样才能只标记以 f 开头并以 k 结尾的单词?

非常感谢您!

【问题讨论】:

    标签: sql regex google-data-studio qregularexpression


    【解决方案1】:

    可以考虑使用

    case
    when REGEXP_MATCH(Query, r'.*\bf[a-zA-Z]*k\b.*') THEN 'Branded'
    ELSE 'Non-branded'
    END
    

    .*\bf[a-zA-Z]*k\b.* 模式匹配

    • .* - 任何文字
    • \b - 单词边界
    • f - f
    • [a-zA-Z]* - 零个或多个字母
    • k - k
    • \b - 单词边界
    • .* - 任何文字

    【讨论】:

    • 谢谢!我试过了,但我认为\b 在 SQL 中不起作用?
    • @Yannik 双反斜杠,'.*\\bf[a-zA-Z]*k\\b.*' 或使用r 前缀,我更新了答案。
    • @Yannik 它终于满足你的需要了吗?如果是,请考虑通过投票/点击左侧的灰色标记来完成帖子。
    猜你喜欢
    • 2017-07-09
    • 2019-03-02
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多