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。