字符串函数和运算符

    注意

    这些函数假定输入字符串包含有效的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中的前导空格。

    删除string中的所有search实例。

    replace(string, search, replace) -> varchar

    stringsearch的所有实例替换为replace

    reverse(string) -> varchar

    以相反的字符顺序返回。

    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将每个键值对拆分成键和值。每个键的值的顺序与其出现在中的顺序相同。

    strpos(string, substring) -> bigint

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

    position(substring IN string) -> bigint

    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语词干。

    normalize(string) -> varchar

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

    normalize(string, form) -> varchar

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

    注意

    该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编码字符串。使用替换无效的UTF-8序列。替换字符串replace必须是单个字符或者为空(此时删除无效字符)。