字符串操作函数

最近更新时间:2023-06-21 15:21:57

我的收藏

函数

函数名
功能描述
string1 || string2
连接两个字符串,返回两个字符串拼接后的结果,等同于 CONCAT(string1, string2)。
CHAR_LENGTH(string)
返回字符串的长度。
CHARACTER_LENGTH(string)
与 CHAR_LENGTH(string) 相同。
UPPER(string)
返回 string 的全大写字母形式。
LOWER(string)
返回 string 的全小写字母形式。
POSITION(string1 IN string2)
获取 string1 在 string2 中第一次出现的位置(位置从1开始计数)。当 string1 在 string2 中找不到时,返回0。
TRIM({BOTH |LEADING |TRAILING }string1 FROM string2 )
从 string2 中除去字符串首尾/首位/末尾的 string1。默认情况下,首尾的空格都被删除。
LTRIM(string)
去掉 string 字符串最左边的所有空格。例如 LTRIM(' Hello') 会返回 'Hello'。
RTRIM(string)
去掉 string 字符串最右边的所有空格。例如 RTRIM(' World ') 会返回 ' World'。
REPEAT(string, integer)
将 string 字符串重复 integer 次。例如 REPEAT('Meow', 3) 会返回 'MeowMeowMeow'。
REGEXP_REPLACE(string1, string2, string3)
对 string1 字符串以 string2 表示的正则表达式进行替换,替换内容是 string3。例如 REGEXP_REPLACE('banana', 'a|n', 'A') 返回 'bAAAAA'。
REPLACE(string1, string2, string3)
将 string1 字符串中所有的 string2 替换为 string3。例如 REPLACE('banana', 'a', 'A') 返回 'bAnAnA'。
OVERLAY(string1 PLACING string2 FROM start_pos [ FOR length ])
将 string1 从第 start_pos 位(start_pos 从1开始计数)开始的子串替换为 string2。可以指定替换的长度。
SUBSTRING(string from pos [ FOR length])
获取从 pos 位开始的子串,默认行为是直到源字符串的最后,可以使用 FOR 来指定子串的长度。其中字符串起始 pos 从1开始计数,而不是0。
REGEXP_EXTRACT(string1, string2[, integer])
从 string1 中提取正则分组,正则表达式为 string2,第一个括号为第一组,以此类推。可通过第三个参数 integer 来指定所需的分组号(从1开始)。如果不指定分组号或者分组号为0,则表示返回整个正则表达式匹配到的字符串。例如,REGEXP_EXTRACT('foothebar', 'foo(.*?)(bar)', 2) 返回 'bar'。
INITCAP(string)
将 string 中的单词,转为以大写字母开头,其他是小写字母(首字母大写)的形式。例如 INITCAP('i have a dream') 返回 'I Have A Dream'。
CONCAT(string1, string2 …)
连接多个字符串。若任意字符串为 NULL,则结果为 NULL。
CONCAT_WS(separator, string1, string2, …)
使用指定的分隔符 separator 连接多个字符串。如果 separator 为 NULL,则结果为 NULL。如果某个字符串为 NULL,则跳过它;但是不会跳过空字符串。例如 CONCAT_WS('~', 'AA','BB', '', 'CC') 会返回 AA~BB~~CC
LPAD(text, length, padding)
使用 padding 指定的字符串从左侧填充 text 字符串到指定长度 length。如果 text 比 length 更长,则会截断到 length 的长度。
RPAD(text, length, padding)
使用 padding 指定的字符串从右侧填充 text 字符串到指定长度 length。如果 text 比 length 更长,则会截断到 length 的长度。
FROM_BASE64(string)
将 Base64 编码的 string 字符串解码为字符串。如果 string 为 NULL,则返回 NULL。
TO_BASE64(string)
将 string 表示的字符串编码为 Base64 字符串。
ASCII(string)
返回 string 字符串中第一个字符的 ASCII 码。如果 string 为 NULL,则返回 NULL。例如 ASCII('an apple') 返回97,因为首字母 'a' 的 ASCII 编码是97。
CHR(integer)
返回编码为 integer 的 ASCII 字符。例如 CHR(97) 返回 'a'。
ENCODE(string, charset)
将 string 字符串转码为 charset 指定的字符集编码的 BINARY 类型,例如 ENCODE(hello, 'GBK')。
DECODE(binary, charset)
将 binary 表示的 BINARY 类型以 charset 指定的字符集解码,例如 DECODE(binary_field, 'UTF-16LE')。
INSTR(string1, string2)
返回 string2 在 string1 字符串中首次出现的位置。如果任意参数为 NULL,结果为 NULL。
LEFT(string, n)
返回 string 从左起前 n 个字符。如果 n 为负数,则返回空字符串。如果任意参数为 NULL,结果为 NULL。
RIGHT(string, n)
返回 string 从右起后 n 个字符。如果 n 为负数,则返回空字符串。如果任意参数为 NULL,结果为 NULL。
LOCATE(string1, string2[, integer])
返回跳过 integer 个字符后,string1 在 string2 中首次出现的位置(参数顺序与 INSTR 函数相反)。如果未找到,则返回0。如果任意参数为 NULL,结果为 NULL。
REGEXP(string, regex)
如果 regex 表示的正则表达式可以匹配 string 中的字符串的任意子串,那么返回 TRUE,否则返回 FALSE。如果任意参数为 NULL,结果为 NULL。
REVERSE(string)
反转 string 字符串。如果任意参数为 NULL,结果为 NULL。
SPLIT_INDEX(string, separator, index)
将 string 表示的字符串以 separator 指定的分隔符拆分,并获取第 index 项,返回值为字符串 VARCHAR 类型。其中 index 从0开始计数
SPLIT(string, separator)
将 string 表示的字符串以 separator 指定的分隔符拆分,并返回一个 Row 类型的对象。
STR_TO_MAP(string1[, string2, string3])
将 string1 字符串用 string2 提供的数据分隔符(默认为半角逗号 ,)和 string3 提供的键值间分隔符(默认为半角等号 =)进行拆分,结果为键值对 MAP<string, string> 类型。例如 STR_TO_MAP('k1=v1,k2=v2,k3=v3') 返回键值对(非字符串){'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}。
SUBSTR(string[, pos[, length]])
返回 string 字符串从 pos 位置开始,长度为 length 的子串。如果不提供 length,则默认到该字符串尾部。
EXPLODE(inputStr, separator)
将某个字符串分割为一张有多行的临时表。这个函数属于 Table Function,需要使用 LATERAL TABLE ( ) 关键字来引用此动态生成的临时表并作为 JOIN 条件的右表。
GET_ROW_ARITY(row)
获取某个 Row 类型对象 row 的列数。
GET_ROW_FIELD_STR(row, index)
获取某个 Row 类型对象 row 的第 index 列的值,index 从0开始计数。返回值为字符串 VARCHAR 类型。
GET_JSON_OBJECT(json_str, path_str)
按 path_str 指定的 JSONPath 路径,获取某个 JSON 字符串 json_str 中的元素,可以任意嵌套。支持的 JSONPath 语法:$表示根对象,.表示子元素,[]表示数组索引,*为数组索引 [] 的通配符。
IS_ALPHA(content)
判断字符串是否只包含字母。
IS_DIGITS(content)
判断字符串是否只包含数字。
MD5(string)
返回字符串的 MD5 值。
POSITION(string1 IN string2)
返回目标字符串 x 在被查询字符串y里第一次出现的位置。如果目标字符串 x 在被查询字符串 y 中不存在,返回值为0。
SHA1
返回字符串 expr 的 SHA1 值。
SHA256
返回字符串 expr 的 SHA256 值。

示例

||

功能描述:连接两个字符串,返回两个字符串拼接后的结果,等同于 CONCAT(string1, string2) 语法:string1 || string2 示例测试语句:SELECT string1 || string2 FROM Test ; 测试数据和结果:
测试数据(VARCHAR string1)
测试数据(VARCHAR string2)
测试结果(VARCHAR)
Oce
anus
Oceanus

CHAR_LENGTH

功能描述:返回字符串的长度。 语法:CHAR_LENGTH( string) 示例测试语句:SELECT CHAR_LENGTH(var1) AS length FROM Test; 测试数据和结果:
测试数据(VARCHAR var1)
测试结果(INT length)
Oceanus
7

CHARACTER_LENGTH

功能描述:与 CHAR_LENGTH(string) 相同。 语法:CHARACTER_LENGTH(string) 示例测试语句:SELECT CHAR_LENGTH(var1) AS length FROM Test; 测试数据和结果:
测试数据(VARCHAR var1)
测试结果(INT length)
Oceanus
7

LOWER

功能描述:返回小写字符的字符串。 语法:LOWER(string) 示例测试语句:SELECT LOWER(var1) AS lower FROM Test; 测试数据和结果:
测试数据(VARCHAR var1)
测试结果(VARCHAR lower)
OCeanus
oceanus

UPPER

功能描述:返回大写字符的字符串。 语法:UPPER( string) 示例测试语句:SELECT UPPER(var1) AS upper FROM Test; 测试数据和结果:
测试数据(VARCHAR var1)
测试结果(VARCHAR upper)
OCeanus
OCEANUS

TRIM

功能描述:从 string2 中除去字符串首尾/首位/末尾的 string1。默认情况下,首尾的空格都被删除。 语法:TRIM({BOTH | LEADING | TRAILING } string1 FROM string2 ) 示例测试语句:SELECT TRIM(BOTH string1 FROM string2) AS res FROM Test; 测试数据和结果:
测试数据(VARCHAR string1)
测试数据(VARCHAR string2)
测试结果(VARCHAR res)
a
aoceanusa
oceanus

CONCAT

功能描述:拼接两个或多个字符串值从而组成一个新的字符串。如果任一参数为 NULL 时,则跳过该参数。 语法:CONCAT( string1, string2 …) 示例测试语句:SELECT CONCAT('123', '456', 'abc', 'def') AS res FROM Test; 测试数据和结果:'123456abcdef'
测试数据(VARCHAR string1)
测试数据(VARCHAR string2)
测试数据(VARCHAR string3)
测试数据(VARCHAR string4)
测试结果(VARCHAR res)
123
456
abc
def
123456abcdef

CONCAT_WS

功能描述:使用指定的分隔符 separator 连接多个字符串。如果 separator 为 NULL,则结果为 NULL。如果某个字符串为 NULL,则跳过它。但是不会跳过空字符串。 语法:CONCAT_WS(separator,string1,string2, …) 示例测试语句:SELECT CONCAT_WS(separator, string1,string2, string3) AS res FROM Test; 测试数据和结果:
测试数据(VARCHAR separator)
测试数据(VARCHAR string1)
测试数据(VARCHAR string2)
测试数据(VARCHAR string3)
测试结果(VARCHAR res)
-
AA
BB
CC
AA-BB-CC

INITCAP

功能描述:将 string 中的单词,转为以大写字母开头,其他是小写字母(首字母大写)的形式。 语法:INITCAP(string) 示例测试语句:SELECT INITCAP(var1) AS str FROM Test; 数据和结果:
测试数据(VARCHAR var1)
测试结果(VARCHAR str)
i have a dream
I Have A Dream

IS_ALPHA

功能描述:判断字符串是否只包含字母。 语法:IS_ALPHA(content) 示例测试语句:SELECT IS_ALPHA(content) AS result FROM Test; 测试数据和结果:
测试数据(VARCHAR content)
测试结果(BOOLEAN result)
Oceanus
true
oceanus123
false
''
false
null
false

IS_DIGITS

功能描述:判断字符串是否只包含数字。 语法:IS_DIGITS(content) 示例测试语句:SELECT IS_DIGITS(content) AS result FROM Test; 测试数据和结果:
测试数据(VARCHAR content)
测试结果(BOOLEAN case_result)
58.0
true
58
true
58pl
false
''
false
null
false

LPAD

功能描述:使用 padding 指定的字符串从左侧填充 text 字符串到指定长度 length。如果 text 比 length 更长,则会截断到 length 的长度。 语法:LPAD(text , length , padding) 示例测试语句:SELECT LPAD(test, length, padding) AS res FROM Test; 测试数据和结果:
测试数据(VARCHAR text)
测试数据(INT length)
测试数据(VARCHAR padding)
测试结果(VARCHAR res)
oceanus
3
hello
hel
oceanus
-1
hello
''
oceanus
12
hello
hellooceanus

RPAD

功能描述:使用 padding 指定的字符串从右侧填充 text 字符串到指定长度 length。如果 text 比 length 更长,则会截断到 length 的长度。 语法:RPAD(text , length , padding) 示例测试语句:SELECT RPAD(text, length, padding) AS res FROM Test; 测试数据和结果:
测试数据(VARCHAR text)
测试数据(INT length)
测试数据(VARCHAR padding)
测试结果(VARCHAR res)
oceanus
3
hello
oce
oceanus
-1
hello
''
oceanus
12
hello
oceanushello

MD5

功能描述:返回字符串的 MD5 值。 语法:MD5(string) 示例测试语句:SELECT MD5(content) AS res FROM Test; 测试数据和结果:
测试数据(VARCHAR content)
测试结果(VARCHAR res)
abc
900150983cd24fb0d6963f7d28e17f72

OVERLAY

功能描述:将 string1 从第 start_pos 位(start_pos 从1开始计数)开始的子串替换为 string2。可以指定替换的长度。 语法:SELECT OVERLAY(string1 PLACING string2 FROM start_pos [ FOR length ]) 示例测试语句:SELECT OVERLAY(string1 PLACING string2 FROM start_pos FOR length) AS res FROM Test; 测试数据和结果:
测试数据(VARCHAR string1)
测试数据(VARCHAR string2)
测试数据(INT start_pos)
测试数据(INT length)
测试结果(VARCHAR res)
oceanus
abc
2
2
oabcanus

POSITION

功能描述:返回目标字符串 x 在被查询字符串 y 里第一次出现的位置。如果目标字符串 x 在被查询字符串 y 中不存在,返回值为0。 语法:POSITION(string1 IN string2) 示例测试语句: SELECT POSITION(string1 IN string2) AS res FROM Test; 测试数据和结果:
测试数据(VARCHAR string1)
测试数据(VARCHAR string2)
测试结果(VARCHAR res)
nu
oceanus
5

GET_JSON_OBJECT(json_str, path_str)

功能描述:按 path_str 指定的 JSONPath 路径,获取某个 JSON 字符串 json_str 中的元素,可以任意嵌套。支持的 JSONPath 语法:$表示根对象,.表示子元素,[]表示数组索引,*为数组索引 [] 的通配符。 语法:GET_JSON_OBJECT(json_str, path_str) 示例测试语句:SELECT GET_JSON_OBJECT(json_str, path_str) AS res FROM Test; 测试数据和结果:
测试数据(VARCHAR json_str)
{"school": {"student":[{"num":8,"type":"A"},{"num":9,"type":"B"}],"teacher":{"num":200,"type":"A"} },"headmaster":"mark" }
测试数据(VARCHAR path_str)
测试结果(VARCHAR res)
$.school
{\\"student\\":[{\\"num\\":8,\\"type\\":\\"A\\"},{\\"num\\":9,\\"type\\":\\"B\\"}],
\\"teacher\\":{\\"num\\":200,\\"type\\":\\"A\\"}}
$.school.student[1]
{\\"num\\":9,\\"type\\":\\"B\\"}
$.school.teacher
{\\"num\\":200,\\"type\\":\\"A\\"}
$.headmaster
mark

REPLACE

功能描述:将 string1 字符串中所有的 string2 替换为 string3。 语法:REPLACE(string1, string2, string3) 示例测试语句:SELECT REPLACE( string1, string2, string3) AS res FROM Test; 测试数据和结果:
测试数据(VARCHAR string1)
测试数据(VARCHAR string2)
测试数据(VARCHAR string3)
测试结果(VARCHAR res)
banana
a
A
bAnAnA

SHA1

功能描述:返回字符串 expr 的 SHA1 值。 语法:SHA1(expr) 示例测试语句:SELECT SHA1(expr) AS res FROM Test; 测试数据和结果:
测试数据(VARCHAR expr)
测试结果(VARCHAR res)
abc
a9993e364706816aba3e25717850c26c9cd0d89d

SHA256

功能描述:返回字符串 expr 的 SHA256 值。 语法:SHA256(expr) 示例测试语句:SELECT SHA256(expr) FROM Test; 测试数据和结果:
测试数据(VARCHAR expr)
测试结果(VARCHAR res)
abc
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad