本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
字符串运算符
您可以使用字符串运算符进行流式处理 SQL,包括串联和字符串模式比较,来组合和比较字符串。
操作符 | 一元/二进制 | 描述 | 注意 |
---|---|---|---|
|| |
B |
联接 |
也适用于二进制类型 |
LIKE |
B |
字符串模式比较 |
<string> LIKE <like pattern> [ESCAPE <escape character>] |
SIMILAR TO |
B |
字符串模式比较 |
<string> SIMILAR TO <similar to pattern> [ESCAPE <escape character>] |
联接
此运算符用于连接一个或多个字符串,此运算符用于连接一个或多个字符串,此运算符按下表所示。
运算 | 结果 |
---|---|
'sql'||'Stream' |
SQLstream |
'sql'|| "||'Stream' |
SQLstream |
'sql'||'Stream'||' 已注册' |
SQLstream Incorporated |
<col1>||<col2>||<col3>||<col4> |
<col1><col2><col3><col4> |
按图案的不同
LIKE 将字符串与字符串模式进行比较。在模式中,字符 _(下划线)和%(百分比)具有特殊含义。
模式中的字符 | 效果 |
---|---|
_ |
匹配任何单个字符 |
% |
匹配任何子字符串,包括空字符串 |
<any other character> |
仅匹配完全相同的字符 |
如果任一操作数为 NULL,则 LIKE 操作的结果为 UNKNOWN。
要显式匹配字符串中的特殊字符,必须使用 ESCAPE 子句指定转义字符。然后,转义字符必须位于模式中的特殊字符之前。下表列出了示例。
运算 | 结果 |
---|---|
'a'就像'a' |
TRUE |
'a'就像'A' |
FALSE |
'a'就像'b' |
FALSE |
'ab'比如'a_' |
TRUE |
'ab'LIKE 'a%' |
TRUE |
'ab'就像 'a\ _'ESCAPE '\' |
FALSE |
'ab'就像 'a\ %'ESCAPE '\' |
FALSE |
'a_' 就像 'a\ _' ESCAPE '\' |
TRUE |
'a%' 像 'a\ %' ESCAPE '\' |
TRUE |
'a'就像'a_' |
FALSE |
'a'就像'a%' |
TRUE |
'abcd'比如'a_' |
FALSE |
'abcd'比如'a%' |
TRUE |
“喜欢” |
TRUE |
'1a' 像 '_a' |
TRUE |
'123axyz'比如'%a%' |
TRUE |
'123axyz'比如 '_%_a%_ ' |
TRUE |
类似于模式
SIMILARY TO 将字符串与模式进行比较。它很像 LIKE 运算符,但更强大,因为模式是正则表达式。
在下面的 SIMILAR TO 表中,seq 表示显式指定的字符的任何序列(如 '13aq')。用于匹配的非字母数字字符前必须加上在 SIMILIR TO 语句中明确声明的转义字符,例如 '13aq\! ' SIMILAR TO '13aq\!24br\!% ESCAPE '\'(此语句为 TRUE)。
当指定范围时,例如在图案中使用短划线时,将使用当前的排序序列。典型范围为 0-9 和 a-z。PostgreSQL
当一条线需要多次比较时,可以匹配的最内层模式将首先匹配,然后匹配 “最内层的模式”,依此类推。
括在括号内的表达式和匹配运算在应用周围的运算之前会先进行评估,同样按最内在的优先顺序进行评估。
分隔符 | 模式中的字符 | 效果 | 规则 ID |
---|---|---|---|
括号 () |
( seq ) |
为 seq 分组(用于定义模式表达式的优先顺序) |
1 |
方括号 [] |
[seq] |
匹配序列中的任何单个字符 |
2 |
插入符号或抑扬符 |
[^seq] |
匹配任何不在序列中的单个字符 |
3 |
[ seq ^ seq] |
匹配 seq 中的任何单个字符,而不匹配 seq 中的任何单个字符 |
4 |
|
猛冲 |
<character1>-<character2> |
指定字符 1 和字符 2 之间的字符范围 (使用一些已知的序列,例如 1-9 或 a-z) |
5 |
酒吧 |
[ seq seq] |
匹配 seq 或 seq |
6 |
星号 |
seq* |
匹配 seq 的零或多个重复项 |
7 |
加 |
seq+ |
匹配 seq 的一个或多个重复项 |
8 |
支架 |
seq{<number>} |
完全匹配 seq 的重复次数 |
9 |
seq{<low number>,<high number>} |
将 seq 的低次数或更多次重复次数与高数的最大重复次数相匹配 |
10 |
|
问号 |
seq? |
匹配 seq 的零或一个实例 |
11 |
下划线 |
_ |
匹配任何单个字符 |
12 |
百分之 |
% |
匹配任何子字符串,包括空字符串 |
13 |
字符 |
<any other character> |
仅匹配完全相同的字符 |
14 |
NULL |
NULL |
如果任一操作数为 NULL,则 SIMILAR TO 运算的结果为 UNKNOWN。 |
15 |
非字母数字 |
特殊字符 |
要显式匹配字符串中的特殊字符, 该特殊字符前必须有一个使用定义的转义字符 在模式末尾指定的 ESCAPE 子句。 |
16 |
下表列出了示例。
运算 | 结果 | 规则 |
---|---|---|
'a' 类似于 'a' |
TRUE |
14 |
'a' 类似于 'A' |
FALSE |
14 |
'a' 类似于 'b' |
FALSE |
14 |
'ab' 类似于 'a_' |
TRUE |
12 |
'ab' 类似于 'a%' |
TRUE |
13 |
'a' 类似于 'a_' |
FALSE |
12 和 14 |
'a' 类似于 'a%' |
TRUE |
13 |
'abcd'类似于'a_' |
FALSE |
12 |
'abcd' 类似于 'a%' |
TRUE |
13 |
“类似于” |
TRUE |
14 |
'1a' 类似于 '_a' |
TRUE |
12 |
'123Axyz'类似于” |
TRUE |
14 |
'123axyz'类似于 '_%_a%_' |
TRUE |
13 和 12 |
'xy'类似于 '(xy)' |
TRUE |
1 |
'abd' 类似于 '[ab] [bcde] d' |
TRUE |
2 |
'bdd'类似于 '[ab] [bcde] d' |
TRUE |
2 |
'abd' 类似于 '[ab] d' |
FALSE |
2 |
'cd'类似于 '[a-e] d' |
TRUE |
2 |
'cd'类似于 '[a-e^c] d' |
FALSE |
4 |
'cd'类似于 '[^ (a-e)] d' |
无效 |
|
'yd' 类似于 '[^ (a-e)] d' |
无效 |
|
'艾米'类似于'艾米弗雷德' |
TRUE |
6 |
'fred'类似于 “艾米弗雷德” |
TRUE |
6 |
'mike'类似于 “艾米弗雷德” |
FALSE |
6 |
'acd' 类似于 'ab*c+d' |
TRUE |
7 和 8 |
'accccd'类似于 'ab*c+d' |
TRUE |
7 和 8 |
'abd' 类似于 'ab*c+d' |
FALSE |
7 和 8 |
'aabc'类似于'ab*c+d' |
FALSE |
|
'abb'类似于 'a (b {3}) ' |
FALSE |
9 |
'abbb'类似于 'a (b {3}) ' |
TRUE |
9 |
'abbbb'类似于 'a (b {3}) ' |
FALSE |
9 |
'abbbb'类似于 'ab {3,6} ' |
TRUE |
10 |
'abbbbbb'类似于 'ab {3,6} ' |
FALSE |
10 |
“类似于'ab?' |
FALSE |
11 |
“类似于 '(ab)?' |
TRUE |
11 |
'a' 类似于 'ab?' |
TRUE |
11 |
'a'类似于 '(ab)?' |
FALSE |
11 |
'a' 类似于 'a (b?) ' |
TRUE |
11 |
'ab'类似于'ab'? |
TRUE |
11 |
'ab'类似于 'a (b?) ' |
TRUE |
11 |
'abb'类似于 'ab?' |
FALSE |
11 |
'ab' 类似于 'a\ _' ESCAPE '\' |
FALSE |
16 |
'ab' 类似于 'a\ %' ESCAPE '\' |
FALSE |
16 |
'a_' 类似于 'a\ _' ESCAPE '\' |
TRUE |
16 |
'a%' 类似于 'a\ %' ESCAPE '\' |
TRUE |
16 |
'a (b {3}) '类似于 'a (b {3})' |
FALSE |
16 |
'a (b {3}) '类似于 'a\ (b\ {3\}\)' ESCAPE '\' |
TRUE |
16 |