函数列表

函数 功能描述

string1 || string2

拼接两个字符串,返回两个字符串串联的结果。
string1 || string2 与 CONCAT(string1, string2) 返回的结果相同。

CHAR_LENGTH(string)
CHARACTER_LENGTH(string)

返回 string 中的字符数量。

UPPER(string)

返回 string 的全大写字母形式。

LOWER(string)

返回 string 的全小写字母形式。

POSITION(string1 IN string2)

获取 string2 中第一次出现 string1 的位置(从 1 开始计数)。
若 string2 中没有包含 string1,返回 0。

TRIM([ BOTH | LEADING | TRAILING ]string1 FROM string2 )

从 string2 中删除首尾/首位/末尾的 string1。默认情况下,首尾的空格都将被删除。

LTRIM(string)

删除 string 最左侧的所有空格。
例如:LTRIM(' Test') 会返回 'Test'。

RTRIM(string)

删除 string 最右侧的所有空格。
例如:RTRIM(' Test ') 会返回 ' Test'。

REPEAT(string, integer)

将 string 重复 integer 次。
例如:REPEAT('Test', 3) 会返回 'TestTestTest'。

REGEXP_REPLACE(string1, string2, string3)

string2 是一个正则表达式,将 string1 中满足该正则表达式的内容,替换为 string3。
例如:REGEXP_REPLACE('TestTestTest', 'es|tT', '') 返回 'Tt'。

REPLACE(string1, string2, string3)

将 string1 中所有的 string2 替换为 string3。
例如:REPLACE('TestTestTest', 'T', 't') 返回 'testtesttest'。

OVERLAY(string1 PLACING string2 FROM integer1 [ FOR integer2 ])

将 string1 从第 integer1 位(从 1 开始计数)开始,长度为 integer2 的子字符串(默认为 string2 的长度 )替换为 string2。
例如:OVERLAY('This is an old string' PLACING ' new' FROM 10 FOR 5) 返回 "This is a new string"。

SUBSTRING(string from integer1 [ FOR integer2])

获取 string1 从第 integer1 位(从 1 开始计数)开始,长度为 integer2 的子字符串(默认到 string1 的末尾 )。

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('AA', 'BB', 'CC') 返回 “AABBCC”。

CONCAT_WS(string1, string2, string3, …​)

使用指定的分隔符 string1 连接多个字符串。

  • 如果 string1 为 NULL,则结果为 NULL。

  • 如果某个字符串为 NULL,则跳过它,但是不会跳过空字符串。例如 CONCAT_WS('~', 'AA', NULL, 'BB', '', 'CC') 返回 “AA~BB~~CC”。

LPAD(string1, integer, string2)

将 string2 拼接到 string1 的左侧,直到字符串长度为 length。
如果 string1 的长度大于 length,则返回 string1 裁剪为长度为 length 的字符串。

RPAD(string1, integer, string2)

将 string2 拼接到 string1 的右侧,直到字符串长度为 length。
如果 string1 的长度大于 length,则返回 string1 裁剪为长度为 length 的字符串。

FROM_BASE64(string)

将 Base64 编码的 string 进行解码。如果 string 为 NULL,则返回 NULL。
例如:FROM_BASE64('aGVsbG8gd29ybGQ=') 返回 “hello world”。

TO_BASE64(string)

将 string 编码为 Base64 字符串。如果 string 为 NULL,则返回 NULL。
例如:TO_BASE64('hello world') 返回 “aGVsbG8gd29ybGQ=”。

ASCII(string)

返回 string 中第一个字符的 ASCII 码。如果 string 为 NULL,则返回 NULL。
例如:ASCII('apple') 返回 97,因为首字母 “a” 的 ASCII 编码是 97。

CHR(integer)

返回 integer 表示的 ASCII 码对应的字符。如果 integer 为 NULL,则返回 NULL;如果 integer 大于 255,则先得到 integer 除以 256 的余数,再返回该余数表示的 ASCII 码对应的字符。
例如:CHR(97) 返回 a,CHR(353) 返回 a。

DECODE(binary, string)

将 binary 表示的 BINARY 类型以 string 指定的字符集('US-ASCII'、'ISO-8859-1'、'UTF-8'、'UTF-16BE'、'UTF-16LE'、'UTF-'之一)解码。如果任一参数为 NULL,则返回 NULL。
例如:DECODE(binary_field, 'UTF-16LE')。

ENCODE(string1, string2)

将 string1 转码为 string2 指定的字符集('US-ASCII'、'ISO-8859-1'、'UTF-8'、'UTF-16BE'、'UTF-16LE'、'UTF-'之一)编码的 BINARY 类型。
例如:ENCODE(hello, 'GBK')。

INSTR(string1, string2)

返回 string2 在 string1 中首次出现的位置。如果任一参数为 NULL,则返回 NULL。

LEFT(string, integer)

返回 string 从左起前 integer 个字符。如果 integer 为负数,则返回空字符串。如果任一参数为 NULL,则返回 NULL。

RIGHT(string, integer)

返回 string 从右起后 integer 个字符。如果 integer 为负数,则返回空字符串。如果任一参数为 NULL,则返回 NULL。

LOCATE(string1, string2[, integer])

返回跳过 integer 个字符后,string1 在 string2 中首次出现的位置(参数顺序与 INSTR 函数相反)。如果未找到,则返回 0。如果任意参数为 NULL,结果为 NULL。

PARSE_URL(string1, string2[, string3])

从 URL (string1)返回指定的部分。
string2 的有效值包括:“HOST”、“PATH”、“QUERY”、“REF”、“PROTOCOL”、“AUTHORITY”、“FILE” 和 “USERINFO”。
若 string2 为 QUERY,可通过 string3 来指定键,从而获取特定键的值。
如果任一参数为 NULL,则返回 NULL。
例如:

  • parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST') 返回 “facebook.com”。

  • parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY', 'k1') 返回 “v1”。

REGEXP(string1, string2)

如果 string1 中的任一子字符串能与正则表达式 string2 匹配,那么返回 TRUE,否则返回 FALSE。如果任一参数为 NULL,返回 NULL。

REVERSE(string)

反转 string 字符串。如果任一参数为 NULL,返回 NULL。

SPLIT_INDEX(string1, string2, integer1)

将 string1 以分隔符 string2 进行拆分,并获取第 integer1(从 0 开始计数)项,返回值为字符串 VARCHAR 类型。如果 integer1 为负数,则返回 NULL 。如果任一参数为 NULL,则返回 NULL。

STR_TO_MAP(string1[, string2, string3])

将 string1 用 string2 提供的数据分隔符(默认为 “,”)和 string3 提供的键值间分隔符(默认为 "=")进行拆分,结果为键值对 MAP 类型。例如 STR_TO_MAP('k1=v1,k2=v2,k3=v3') 返回键值对(非字符串){'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}。

SUBSTR(string[, integer1[, integer2]])

返回 string 字符串从 integer1 位置开始,长度为 integer2 的子字符串。如果不提供 integer2,则默认到 string 的末尾。

常用函数示例

||

功能描述:拼接两个字符串,返回两个字符串串联的结果。
语法:string1 || string2
测试语句:SELECT string1 || string2 FROM TableTest ;
测试数据和结果

测试数据(VARCHAR string1) 测试数据(VARCHAR string2) 测试结果(VARCHAR)

Hello

World

HelloWorld

CHAR_LENGTH

功能描述:返回 string 中的字符数量。
语法:CHAR_LENGTH(string)
测试语句:SELECT CHAR_LENGTH(var1) AS length FROM TableTest;
测试数据和结果

测试数据(VARCHAR var1) 测试结果(INT length)

HelloWorld

10

CHARACTER_LENGTH

功能描述:返回 string 中的字符数量。
语法:CHARACTER_LENGTH(string)
测试语句:SELECT CHAR_LENGTH(var1) AS length FROM TableTest;
测试数据和结果

测试数据(VARCHAR var1) 测试结果(INT length)

HelloWorld

10

CONCAT

功能描述:连接多个字符串。若任意字符串为 NULL,则结果为 NULL。
语法:CONCAT(string1, string2 …​)
测试语句:SELECT CONCAT(string1, string2, string3) AS result FROM TableTest;
测试数据和结果

测试数据(VARCHAR string1) 测试数据(VARCHAR string2) 测试数据(VARCHAR string3) 测试结果(VARCHAR result)

AA

BB

CC

AABBCC

CONCAT_WS

功能描述:使用指定的分隔符 string1 连接多个字符串。
语法:CONCAT_WS(string1, string2, string3, …​)
测试语句:SELECT CONCAT_WS(string1, string2, string3, string4) AS result FROM TableTest;
测试数据和结果

测试数据(VARCHAR string1) 测试数据(VARCHAR string2) 测试数据(VARCHAR string3) 测试数据(VARCHAR string4) 测试结果(VARCHAR result)

-

AA

BB

CC

AA-BB-CC

INITCAP

功能描述:将 string 中的单词,首字母转换为大写,其余为小写。
语法:INITCAP(string)
测试语句:SELECT INITCAP(var1) AS str FROM TableTest;
测试数据和结果

测试数据(VARCHAR var1) 测试结果(VARCHAR str)

hello world

Hello World

LOWER

功能描述:返回 string 的全小写字母形式。
语法:LOWER(string)
测试语句:SELECT LOWER(var1) AS lower FROM TableTest;
测试数据和结果

测试数据(VARCHAR var1) 测试结果(VARCHAR lower)

HelloWorld

helloworld

LPAD

功能描述:将 string2 拼接到 string1 的左侧,直到字符串长度为 length。
语法:LPAD(string1, integer, string2)
测试语句:SELECT LPAD(string1, integer, string2) AS result FROM TableTest;
测试数据和结果

测试数据(VARCHAR string1) 测试数据(INT integer) 测试数据(VARCHAR string2) 测试结果(VARCHAR result)

testtest

3

hello

hel

testtest

-1

hello

''

testtest

12

hello

helltesttest

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 result FROM Test;
测试数据和结果

测试数据(VARCHAR string1) 测试数据(VARCHAR string2) 测试数据(INT start_pos) 测试数据(INT length) 测试结果(VARCHAR result)

testtest

abc

2

2

tabcttest

POSITION

功能描述:获取 string2 中第一次出现 string1 的位置(从 1 开始计数)。
语法:POSITION(string1 IN string2)
示例测试语句:SELECT POSITION(string1 IN string2) AS result FROM TableTest;
测试数据和结果

测试数据(VARCHAR string1) 测试数据(VARCHAR string2) 测试结果(VARCHAR result)

lo

helloworld

4

REPLACE

功能描述:将 string1 中所有的 string2 替换为 string3。
语法:REPLACE(string1, string2, string3)
示例测试语句:SELECT REPLACE( string1, string2, string3) AS result FROM TableTest;
测试数据和结果

测试数据(VARCHAR string1) 测试数据(VARCHAR string2) 测试数据(VARCHAR string3) 测试结果(VARCHAR result)

banana

a

A

bAnAnA

RPAD

功能描述:将 string2 拼接到 string1 的右侧,直到字符串长度为 length。
语法:RPAD(string1, integer, string2)
测试语句:SELECT RPAD(string1, integer, string2) AS result FROM TableTest;
测试数据和结果

测试数据(VARCHAR string1) 测试数据(INT integer) 测试数据(VARCHAR string2) 测试结果(VARCHAR result)

testtest

3

hello

tes

testtest

-1

hello

''

testtest

12

hello

testtesthell

TRIM

功能描述:从 string2 中删除首尾/首位/末尾的 string1。默认情况下,首尾的空格都将被删除。
语法:TRIM([ BOTH | LEADING | TRAILING ]string1 FROM string2 )
测试语句:SELECT TRIM(BOTH string1 FROM string2) AS result FROM TableTest;
测试数据和结果

测试数据(VARCHAR string1) 测试数据(VARCHAR string2) 测试结果(VARCHAR result)

t

tHelloWorldt

HelloWorld

UPPER

功能描述:返回 string 的全大写字母形式。
语法:UPPER(string)
测试语句:SELECT UPPER(var1) AS upper FROM TableTest;
测试数据和结果

测试数据(VARCHAR var1) 测试结果(VARCHAR upper)

HelloWorld

HELLOWORLD