前言
like、not like在SQL中用於模糊查詢,%
表示任意個字符,_
表示單個任意字符,如果需要在模糊查詢中查詢這兩個通配符,需要用ESCAPE
進行轉義,如下:
select * from table where name like '張/_小%' escape '/';
這里表明/
作為轉義符,所以就可以在模糊查詢中將通配符作為普通字符來搜索。另外,因為左模糊查詢效率低下,一般不推薦在應用中去使用。
除了以上通用的like和not like,在PostgreSQL中還有特殊的操作符用於模糊查詢。
ilike
和not ilike
ilike
表示在模糊匹配字符串時不區分大小寫,i
即是ignore的意思。
not ilike
表示不模糊匹配字符串且不區分大小寫。
~
和~*
,!~
和!~*
~
表示匹配正則表達式,且區分大小寫。
~*
表示匹配正則表達式,且不區分大小寫。
可以通過這兩個操作符來實現like和ilike一樣的效果,如下:
1.匹配以“張”開頭的字符串
select * from table where name ~ '^張';
2.匹配以“小”結尾的字符串
select * from table where name ~ '小$';
其實這里的^和$就是正則表達式里的用法。
!~
是~
的否定用法,表示不匹配正則表達式,且區分大小寫。
!~*
是~*
的否定用法,表示不匹配正則表達式,且不區分大小寫。
~~
和~~*
,!~~
和!~~*
~~
等效於like,~~*
等效於ilike。
!~~
等效於not like,!~~*
等效於not ilike。