gpt4 book ai didi

sql - 在 Snowflake 中使用正则表达式过滤与句子/单词的完全匹配

转载 作者:行者123 更新时间:2023-12-05 02:36:15 29 4
gpt4 key购买 nike

我想过滤与特定单词或句子匹配的列。例如,如果我选择单词 anti 进行过滤,则在以下行中:

this is anti-pattern
antimosquitos products
the word anti is cool

我只想保留最后一个,因为它是唯一一个匹配整个匹配模式的整体,而不是在另一个词中。

我已经尝试使用 RLIKE,但我总是得到一个 FALSE 值,但我不明白为什么。我希望至少在这些 SQL 语句之一中有一个 TRUE 值:

SELECT RLIKE ('Spray antimosquitos', '\bantimosquitos\b', 'i') as p1;
SELECT RLIKE ('Spray antimosquitos', '\santimosquitos\s', 'i') as p1;
SELECT RLIKE ('Spray antimosquitos', '\santimosquitos', 'i') as p1;
SELECT RLIKE ('Spray antimosquitos', '\santimosquitos', 'i') as p1;

然而,事实并非如此。我尝试过其他形式,例如:

SELECT RLIKE ('Spray antimosquitos', '\b antimosquitos \b', 'i') as p1
SELECT RLIKE ('Spray antimosquitos', '*antimosquitos*', 'i') as p1
SELECT RLIKE ('Spray antimosquitos', ' antimosquitos ', 'i') as p1

而且我无法获得返回值 TRUE。

我的 RLIKE 怎么了?

最佳答案

你需要

  • 确保反斜杠加倍,因为反斜杠在字符串文字中用于创建字符串转义序列(例如 \t 用于制表符,\n 用于换行等。 )
  • 确保模式匹配整个字符串,RLIKE 就是这样工作的。它通常通过在模式的两端添加 .* 来启用。

所以,在你的情况下,你可以使用

'.*\\bantimosquitos\\b.*'

关于sql - 在 Snowflake 中使用正则表达式过滤与句子/单词的完全匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70336202/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com