【问题标题】:How to use Like '%' in a phrase with multiple words如何在包含多个单词的短语中使用 Like '%'
【发布时间】:2014-04-10 22:21:03
【问题描述】:

假设我有下表

user|text
1   |red 123 orange blue green
2   |red orange blue
3   |blue orange 123 red

如果我想拉出文本中同时包含“123”和“蓝色”的所有用户,我该怎么做?我想拉用户 1 和 3。

SELECT *
FROM Table
WHERE text LIKE '%123%'&&'%blue%'
OR text LIKE '%blue%'&&'%123%'

这是否可以通过使用正则表达式函数更好地解决?

【问题讨论】:

    标签: sql regex hive


    【解决方案1】:

    试试这个代码:

    SELECT *
    FROM Table
    WHERE text LIKE '%123%'
    and text like '%blue%'
    

    【讨论】:

      【解决方案2】:

      您需要为每个模式重复LIKE

      SELECT *
      FROM Table
      WHERE text LIKE '%123%' AND text LIKE '%blue%'
      

      你也可以这样写:

      WHERE text LIKE '%123%blue%' OR text LIKE '%blue%123%'
      

      或:

      WHERE text RLIKE '123.*blue|blue.*123'
      

      但是,如果您必须以任意顺序匹配多个字符串,这两种解决方案会呈指数级增长。第一个版本在匹配数上是线性的。

      【讨论】:

      • &&?不应该是AND吗?
      • 一些SQL方言也有&&
      • @barmar,SQL 的哪些子版本有 &&?
      • 天啊!我其实不知道。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多