字符串函数

字符串函数执行字符串转换、提取或处理操作,或返回有关字符串的信息。

此部分描述了用于检查和处理字符串值的函数和运算符。在此文中的字符串包括 CHAR、VARCHAR、BINARY 和 VARBINARY 类型的值。

除非另行说明,否则此部分列出的所有函数适用于所有四种数据类型。与某些其它 SQL 实施相对的是,Vertica 内部维持不填充 CHAR 字符串,至在最终输出填充。因此,转换 CHAR(3) 'ab' 为 VARCHAR(5),长度 2 而不是长度 3(包括一个行尾空格)的 VARCHAR。

此处描述的部分函数可以通过先将非字符串类型的数据转换为字符串表示形式,从而适用于此类数据。部分函数仅适用于字符形式的字符串,另一部分函数则仅适用于二进制字符串。很多函数适用于两者。BINARY 和 VARBINARY 函数忽略了多字节 UTF-8 字符界限。

非二进制字符形式的字符串函数处理 Unicode Consortium 规定的规范化多字节 UTF-8 字符。除非另有说明,否则这些相关的字符形式字符串函数可选择性地指定 VARCHAR 实参应解释为八位字节(字节)序列还是对于区域设置敏感的 UTF-8 字符序列。为此,您可以将“USING OCTETS”或“USING CHARACTERS”(默认值)添加为函数形参。

部分字符形式的字符串函数为 稳定,因为 UTF-8 大小写转换、搜索和排序通常可以取决于区域设置。因此,LOWER 为稳定函数,而 LOWERB 为 不可变函数。USING OCTETS 子句将这些函数转换为 "B" 形式,因此成为不可变函数。如果区域设置为默认设置 collation=binary,则所有字符串函数(除 CHAR_LENGTH/CHARACTER_LENGTH、LENGTH、SUBSTR 和 OVERLAY 以外)转换为各自的 "B" 形式,因此成为不可变函数。

BINARY 隐式转换为 VARBINARY,因此采用 VARBINARY 实参的函数可与 BINARY 使用。

有关对字符串(而非 VARBINARY)进行操作的其他函数,请参阅 正则表达式函数