如何使用Like'%'在一个有多个单词的短语中

时间:2014-04-10 22:21:04

标签: sql regex hive

我们说我有下表

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%'

通过使用正则表达式函数可以更好地解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您需要为每种模式重复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'

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

答案 1 :(得分:1)

试试这段代码:

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