PostgreSQL中的模糊搜索

关于模糊搜索

在SQL中进行模糊搜索通常使用LIKE语句,但是在Postgresql中也可以使用其他的写法,因此我打算留下备忘录。

使用运算符进行模糊搜索

    以下のレコードが投入されているテーブルがあるとする。
idlanguage1Java2JavaScript3Ruby4PHP
-- LIKE句を用いたSQL
SELECT * FROM hoge WHERE name LIKE 'Java%'

-- Postgresqlの演算子を用いたSQL
SELECT * FROM hoge WHERE name ~~ 'Java%'

如果执行上述的SQL语句,将会得到相同的结果。

+------------------+
| id | language    |   
+------------------+
| 1   | Java       |
| 2   | JavaScript |
+------------------+

在进行模糊搜索时,不区分大小写

在Postgresql中,为了进行模糊搜索,实现了一个不区分大小写的ILIKE,尽管它可能没有像LIKE子句那样被频繁使用,但了解这一点是很有价值的。

用户可以自由输入,对于不进行大小写检查的项目可能是有效的。

将先前的表记录稍微修改一下。
Java → java
JavaScript → javascript

idlanguage1java2javascript3Ruby4PHP
-- ILIKE句を用いたSQL
SELECT * FROM hoge WHERE name ILIKE 'Java%'

-- Postgresqlの演算子を用いたSQL
SELECT * FROM hoge WHERE name ~~* 'Java%'

如果执行上述的SQL语句,得到的结果将与之前相同。

+------------------+
| id | language    |   
+------------------+
| 1   | Java       |
| 2   | javascript |
+------------------+

以上的都是Postgresql特有的运算符。
当然还有相对应的NOT LIKE, NOT ILIKE和!~~, !~~* 运算符。

参考文献的含义是指在研究或写作过程中,可以被引用或参考的相关文献资料。

PostgreSQL 12.3文档中的第9章节是关于函数和运算符的,具体是9.7节讲解的是模式匹配1。

广告
将在 10 秒后关闭
bannerAds