LIKE 和 RLIKE 运算符
编辑LIKE 和 RLIKE 运算符编辑
LIKE
和 RLIKE
运算符通常用于根据字符串模式过滤数据。它们通常作用于运算符左侧的字段,但也可以作用于常量(字面量)表达式。运算符的右侧表示模式。两者都可以在 SELECT
语句的 WHERE
子句中使用,但 LIKE
也可以在其他地方使用,例如定义 索引模式 或跨各种 SHOW 命令。本节仅涵盖 SELECT ... WHERE ...
的用法。
LIKE
编辑
语法
**描述**:SQL LIKE
运算符用于使用通配符将值与相似值进行比较。与 LIKE
运算符一起使用的有两个通配符
- 百分号 (%)
- 下划线 (_)
百分号表示零个、一个或多个字符。下划线表示单个数字或字符。这些符号可以组合使用。
没有其他字符具有特殊含义或充当通配符。在其他语言中经常用作通配符的字符(*
或 ?
)被视为普通字符。
SELECT author, name FROM library WHERE name LIKE 'Dune%'; author | name ---------------+--------------- Frank Herbert |Dune Frank Herbert |Dune Messiah
此外,如果需要匹配通配符本身,还可以使用转义字符。这可以通过在 LIKE ...
运算符后使用 ESCAPE [escape_character]
语句来完成
SELECT name, author FROM library WHERE name LIKE 'Dune/%' ESCAPE '/';
在上面的示例中,/
被定义为转义字符,如果需要专门匹配模式中的 %
或 _
字符,则需要将其放在这些字符之前。默认情况下,没有定义转义字符。
尽管 LIKE
在 Elasticsearch SQL 中搜索或过滤时是一个有效的选项,但全文搜索谓词 MATCH
和 QUERY
速度更快,功能更强大,是首选替代方案。
RLIKE
编辑
语法
**描述**:此运算符类似于 LIKE
,但用户不限于使用百分号 (%
) 和下划线 (_
) 基于固定模式搜索字符串;在这种情况下,模式是正则表达式,允许构造更灵活的模式。
有关支持的语法,请参阅 _正则表达式语法_。
SELECT author, name FROM library WHERE name RLIKE 'Child.* Dune'; author | name ---------------+---------------- Frank Herbert |Children of Dune
尽管 RLIKE
在 Elasticsearch SQL 中搜索或过滤时是一个有效的选项,但全文搜索谓词 MATCH
和 QUERY
速度更快,功能更强大,是首选替代方案。
首选全文搜索谓词编辑
使用 LIKE
/RLIKE
时,请考虑使用 全文搜索谓词,它们速度更快,功能更强大,并提供按相关性排序的选项(可以根据匹配程度返回结果)。
例如
LIKE/RLIKE |
QUERY/MATCH |
|
|
|
|
|
|
|
|
|
|
|
|