字符串函数和运算符

字符串运算符

||运算符执行连接。

字符串函数

注意

这些函数假定输入字符串包含有效的UTF-8编码的Unicode代码点。不会显式检查UTF-8数据是否有效,对于无效的UTF-8数据,函数可能会返回错误的结果。可以使用from_utf8来更正无效的UTF-8数据。

此外,这些函数对Unicode代码点进行运算,而不是对用户可见的字符(或字形群集)进行运算。某些语言将多个代码点组合成单个用户感观字符(这是语言书写系统的基本单位),但是函数会将每个代码点视为单独的单位。

lowerupper函数不执行某些语言所需的区域设置相关、上下文相关或一对多映射。

具体而言,对于立陶宛语、土耳其语和阿塞拜疆语,这将返回不正确的结果。

chr(n) -> varchar

以单个字符串的形式返回Unicode代码点n

codepoint(string) -> integer

返回string的唯一字符的Unicode编码点。

concat(string1, …, stringN) -> varchar

返回string1string2...stringN的连接结果。该函数提供与 SQL 标准连接运算符(||)相同的功能。

hamming_distance(string1, string2) -> bigint

返回string1string2的汉明距离,即对应字符不同的位置的数量。

请注意,这两个字符串的长度必须相同。

length(string) -> bigint

以字符为单位返回string的长度。

levenshtein_distance(string1, string2) -> bigint

返回string1string2的Levenshtein编辑距离,即将string1更改为string2所需的最小单字符编辑(插入、删除或替换)数量。

lower(string) -> varchar

string转换为小写。

lpad(string, size, padstring) -> varchar

使用padstringstring左填充至size个字符。如果size小于string的长度,则结果被截断为size个字符。size不得为负数,并且padstring必须为非空值。

ltrim(string) -> varchar

删除string中的前导空格。

replace(string, search) -> varchar

删除string中的所有search实例。

replace(string, search, replace) -> varchar

stringsearch的所有实例替换为replace

reverse(string) -> varchar

以相反的字符顺序返回string

rpad(string, size, padstring) -> varchar

使用padstringstring右填充至size个字符。如果size小于string的长度,则结果被截断为size个字符。size不得为负数,并且padstring必须为非空值。

rtrim(string) -> varchar

删除string中的尾随空格。

split(string, delimiter) -> array(varchar)

根据delimiter拆分string并返回一个数组。

split(string, delimiter, limit) -> array(varchar)

delimiter拆分string并返回一个大小最大为limit的数组。该数组中的最后一个元素始终包含string中的所有剩余内容。limit必须为正数。

split_part(string, delimiter, index) -> varchar

delimiter拆分string并返回字段index。字段索引从1开始。如果索引大于字段数,则返回NULL。

split_to_map(string, entryDelimiter, keyValueDelimiter) -> map<varchar, varchar>

entryDelimiterkeyValueDelimiter拆分string并返回Map。entryDelimiterstring拆分成键值对。

keyValueDelimiter将每个键值对拆分成键和值。

split_to_multimap(string, entryDelimiter, keyValueDelimiter) -> map(varchar, array(varchar))

entryDelimiterkeyValueDelimiter拆分string并返回包含每个唯一键的值数组的Map。

entryDelimiterstring拆分成键值对。 keyValueDelimiter将每个键值对拆分成键和值。每个键的值的顺序与其出现在string中的顺序相同。

strpos(string, substring) -> bigint

返回string中第一个substring实例的起始位置。位置从1开始。如果未找到,则返回0

position(substring IN string) -> bigint

返回string中第一个substring实例的起始位置。位置从1开始。如果未找到,则返回0

substr(string, start) -> varchar

返回从起始位置start开始的string其余部分。位置从1开始。负起始位置表示相对于字符串的末尾。

substr(string, start, length) -> varchar

返回从起始位置start开始且长度为lengthstring子字符串。位置从1开始。负起始位置表示相对于字符串的末尾。

trim(string) -> varchar

删除string中的前导和尾随空格。

upper(string) -> varchar

string转换为大写。

word_stem(word) -> varchar

返回word的英语词干。

word_stem(word, lang) -> varchar

返回wordlang语词干。

Unicode函数

normalize(string) -> varchar

使用NFC范式对string进行转换。

normalize(string, form) -> varchar

使用指定的范式对string进行转换。form必须为以下关键字之一:

范式说明
NFD规范分解
NFC规范分解,后跟规范合成
NFKD兼容性分解
NFKC兼容性分解,后跟规范合成

注意

该SQL标准函数具有特殊的语法,要求指定form为关键字,而不是字符串。

to_utf8(string) -> varbinary

string编码为UTF-8 varbinary表示形式。

from_utf8(binary) -> varchar

binary解码UTF-8编码字符串。使用Unicode替换字符U+FFFD替换无效的UTF-8序列。

from_utf8(binary, replace) -> varchar

binary解码UTF-8编码字符串。使用replace替换无效的UTF-8序列。替换字符串replace必须是单个字符或者为空(此时删除无效字符)。