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

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

字符串运算符

您可以使用字符串运算符进行流式处理 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 运算的结果为未知。

要显式匹配字符串中的特殊字符,必须使用 ESCAPE 子句指定转义字符。然后,转义字符必须位于模式中的特殊字符之前。下表列出了示例。

运算 结果

'a'就像'a'

TRUE

'a'就像'A'

FALSE

'a'就像'b'

FALSE

'ab'比如'a_'

TRUE

'ab'比如'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

SIMILAR TO

SIMILAR TO 将字符串与模式进行比较。它很像 LIKE 运算符,但功能更强大,因为模式是正则表达式。

在下面的 SIMILAR TO 表中,seq 表示显式指定的字符的任何序列(如 '13aq')。用于匹配的非字母数字字符前面必须有一个在 SIMILAR 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'

无效

'amy'类似于'amyfred'

TRUE

6

'fred'类似于'amyfred'

TRUE

6

'mike'类似于'amyfred'

FALSE

6

'acd'类似于'ab*c+d'

TRUE

7 & 8

'acccd'类似于'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

'abbbbbbb'类似于 '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