5.7 KiB
字符串函数和运算符
字符串运算符
||运算符执行连接。
字符串函数
注意
这些函数假定输入字符串包含有效的UTF-8编码的Unicode代码点。不会显式检查UTF-8数据是否有效,对于无效的UTF-8数据,函数可能会返回错误的结果。可以使用from_utf8来更正无效的UTF-8数据。
此外,这些函数对Unicode代码点进行运算,而不是对用户可见的字符(或字形群集)进行运算。某些语言将多个代码点组合成单个用户感观字符(这是语言书写系统的基本单位),但是函数会将每个代码点视为单独的单位。
lower和upper函数不执行某些语言所需的区域设置相关、上下文相关或一对多映射。
具体而言,对于立陶宛语、土耳其语和阿塞拜疆语,这将返回不正确的结果。
chr(n) -> varchar
以单个字符串的形式返回Unicode代码点n。
codepoint(string) -> integer
返回string的唯一字符的Unicode编码点。
concat(string1, ..., stringN) -> varchar
返回string1、string2、...、stringN的连接结果。该函数提供与 SQL 标准连接运算符(||)相同的功能。
hamming_distance(string1, string2) -> bigint
返回string1和string2的汉明距离,即对应字符不同的位置的数量。
请注意,这两个字符串的长度必须相同。
length(string) -> bigint
以字符为单位返回string的长度。
levenshtein_distance(string1, string2) -> bigint
返回string1和string2的Levenshtein编辑距离,即将string1更改为string2所需的最小单字符编辑(插入、删除或替换)数量。
lower(string) -> varchar
将string转换为小写。
lpad(string, size, padstring) -> varchar
使用padstring将string左填充至size个字符。如果size小于string的长度,则结果被截断为size个字符。size不得为负数,并且padstring必须为非空值。
ltrim(string) -> varchar
删除string中的前导空格。
replace(string, search) -> varchar
删除string中的所有search实例。
replace(string, search, replace) -> varchar
将string中search的所有实例替换为replace。
reverse(string) -> varchar
以相反的字符顺序返回string。
rpad(string, size, padstring) -> varchar
使用padstring将string右填充至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>
按entryDelimiter和keyValueDelimiter拆分string并返回Map。entryDelimiter将string拆分成键值对。
keyValueDelimiter将每个键值对拆分成键和值。
split_to_multimap(string, entryDelimiter, keyValueDelimiter) -> map(varchar, array(varchar))
按entryDelimiter和keyValueDelimiter拆分string并返回包含每个唯一键的值数组的Map。
entryDelimiter将string拆分成键值对。 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开始且长度为length的string子字符串。位置从1开始。负起始位置表示相对于字符串的末尾。
trim(string) -> varchar
删除string中的前导和尾随空格。
upper(string) -> varchar
将string转换为大写。
word_stem(word) -> varchar
返回word的英语词干。
word_stem(word, lang) -> varchar
返回word的lang语词干。
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必须是单个字符或者为空(此时删除无效字符)。