我们说我有下表
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%'
通过使用正则表达式函数可以更好地解决这个问题吗?
答案 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%'