函数
函数名 | 功能描述 |
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 |