標籤:
參考http://www.php100.com/manual/PostgreSQL8/functions-matching.html
LIKE
string LIKE pattern [ ESCAPE escape-character ]string NOT LIKE pattern [ ESCAPE escape-character ]
每個 pattern 定義一個字串的集合。 如果該 string 包含在 pattern 代表的字串集合裡,那麼 LIKE 運算式返回真。 (和我們想象的一樣,如果 LIKE 返回真,那麼 NOT LIKE 運算式返回假, 反之亦然。一個等效的運算式是 NOT (string LIKE pattern).)
如果 pattern 不包含百分比符號 或者底線,那麼該模式只代表它本身; 這時候 LIKE 的行為就象等號操作符。 在 pattern 裡的底線 (_)代表(匹配)任何單個字元; 而一個百分比符號(%)匹配任何零或更多 字元長的字串。
下面是一些例子∶
‘abc‘ LIKE ‘abc‘ true‘abc‘ LIKE ‘a%‘ true‘abc‘ LIKE ‘_b_‘ true‘abc‘ LIKE ‘c‘ false
LIKE 模式比對總是覆蓋整個字串。 要匹配在字串內部任何位置的序列,該模式必須以百分比符號開頭和結尾。
LIKE運算子也可以匹配指定的字串,但與~不同,LIKE匹配的字串如果在文本中間出現,則找不到它,相應的行也不會返回。而~在文本進行匹配,如果被匹配的字串在文本中出現,~將會找到它,相應的行會被返回。
Table Regex匹配操作符(注意:~相當於like)
操作符 |
描述 |
例子 |
~ |
匹配Regex,大小寫相關 |
‘thomas‘ ~ ‘.*thomas.*‘ |
~* |
匹配Regex,大小寫無關 |
‘thomas‘ ~* ‘.*Thomas.*‘ |
!~ |
不匹配Regex,大小寫相關 |
‘thomas‘ !~ ‘.*Thomas.*‘ |
!~* |
不匹配Regex,大小寫無關 |
‘thomas‘ !~* ‘.*vadim.*‘ |
Regex量詞
量詞 |
匹配 |
* |
一個匹配 0 或者更多個原子的序列 |
+ |
一個匹配 1 或者更多個原子的序列 |
? |
一個匹配 0 個或者 1 個原子的序列 |
{m} |
一個正好匹配 m 個原子的序列 |
{m,} |
一個匹配m 個或者更多原子的序列 |
{m,n} |
一個匹配 m 到 n 個(包含兩端) 原子的序列;m 不能比 n 大 |
*? |
* 的非貪婪模式 |
+? |
+ 的非貪婪模式 |
?? |
? 的非貪婪模式 |
{m}? |
{m} 的非貪婪模式 |
{m,}? |
{m,} 的非貪婪模式 |
{m,n}? |
{m,n} 的非貪婪模式 |
{...} 的形式被稱作範圍。 一個範圍內的數字 m 和 n 都是無符號十進位整數, 允許的數值從 0 到 255(閉區間)。
Regex約束
約束 |
描述 |
^ |
匹配字串的開頭 |
$ |
匹配字串的結尾 |
(?=re) |
正前瞻 匹配任何匹配 re 的 子字串起始點(只在 ARE 中有) |
(?!re) |
負前瞻 匹配任何不匹配 re 的子字串的起始點。(只在 ARE 中有) |
PostgreSQLRegex查詢