描述:SIMILAR TO操作符根据自己的模式是否匹配给定串而返回真或者假。他和LIKE非常类似,只不过他使用SQL标准定义的正则表达式理解模式。
匹配规则:
a. 和LIKE一样,此操作符只有在它的模式匹配整个串的时候才能成功。如果要匹配在串内任何位置的序列,该模式必须以百分号开头和结尾。
b. 下划线 (_)代表(匹配)任何单个字符; 百分号(%)代表任意串的通配符。
c. SIMILAR TO也支持下面这些从POSIX正则表达式借用的模式匹配元字符,如表5-3所示。
表 元字符及其含义
元字符 | 含义 |
| | 表示选择(两个候选之一) |
* | 表示重复前面的项零次或更多次 |
+ | 表示重复前面的项一次或更多次 |
? | 表示重复前面的项零次或一次 |
{m} | 表示重复前面的项刚好m次 |
{m,} | 表示重复前面的项m次或更多次 |
{m,n} | 表示重复前面的项至少m次并且不超过n次 |
() | 把多个项组合成一个逻辑项 |
[...] | 声明一个字符类,就像POSIX正则表达式一样 |
d. 前导逃逸字符可以禁止所有这些元字符的特殊含义。逃逸字符的使用规则和LIKE一样。
正则表达式函数:
支持使用函数substring(string from pa...截取匹配SQL正则表达式的子字符串。
示例:
gbase=# SELECT 'abc' SIMILAR TO 'abc' AS RESULT;
result
-----------
t
(1 row)
gbase=# SELECT 'abc' SIMILAR TO 'a' AS RESULT;
result
-----------
f
(1 row)
gbase=# SELECT 'abc' SIMILAR TO '%(b|d)%' AS RESULT;
result
-----------
t
(1 row)
gbase=# SELECT 'abc' SIMILAR TO '(b|c)%' AS RESULT;
result
-----------
f
(1 row)