字符串运算符 - Amazon Kinesis Data Analytics
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

字符串运算符

您可以使用字符串运算符进行流式处理 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