文章目录
-
- 1、ascii
- 2、base64
- 3、bit_length
- 4、btrim
- 5、char
- 6、char_length
- 7、character_length
- 8、chr
- 9、collate
- 10、collation
- 11、concat_ws
- 12、contains
- 13、decode
- 14、elt
- 15、encode
- 16、endswith
- 17、find_in_set
- 18、format_number
- 19、format_string
- 20、initcap
- 21、instr
- 22、is_valid_utf8
- 23、lcase
- 24、left
- 25、len
- 26、length
- 27、levenshtein
- 28、locate
- 29、lower
- 30、lpad
- 31、ltrim
- 32、luhn_check
- 33、make_valid_utf8
- 34、mask
- 35、octet_length
- 36、overlay
- 37、position
- 38、printf
- 39、quote
- 40、randstr
- 41、regexp_count
- 42、regexp_extract
- 43、regexp_extract_all
- 44、regexp_instr
- 45、regexp_replace
- 46、regexp_substr
- 47、repeat
- 48、replace
- 49、right
- 50、rpad
- 51、rtrim
- 52、sentences
- 53、soundex
- 54、space
- 55、split
- 56、split_part
- 57、startswith
- 58、substr
- 59、substring
- 60、substring_index
- 61、to_binary
- 62、to_char
- 63、to_number
- 64、to_varchar
- 65、translate
- 66、trim
- 67、try_to_binary
- 68、try_to_number
- 69、try_validate_utf8
- 70、ucase
- 71、unbase64
- 72、upper
- 73、validate_utf8
- 74、||
原文:Apache Spark SQL --- String Functions
本分类按照 Spark SQL 官方目录函数顺序整理,共 74 个函数。
1、ascii
语法
sql
ascii(str)
说明
返回字符串第一个字符对应的数字编码值。
示例
sql
> SELECT ascii('222');
50
引入版本: 1.5.0
2、base64
语法
sql
base64(bin)
说明
将二进制数据转换为 Base64 字符串。
示例
sql
> SELECT base64('Spark SQL');
U3BhcmsgU1FM
引入版本: 1.5.0
3、bit_length
语法
sql
bit_length(expr)
说明
返回字符串或二进制数据的位数。
示例
sql
> SELECT bit_length('Spark SQL');
72
引入版本: 2.3.0
4、btrim
语法
sql
btrim(str[, trimStr])
说明
移除字符串两端的空格,或移除两端指定的字符。
示例
sql
> SELECT btrim(' SparkSQL ');
SparkSQL
引入版本: 3.2.0
5、char
语法
sql
char(expr)
说明
返回与给定数值的二进制值相对应的 ASCII 字符;大于 256 时按 256 取模。
示例
sql
> SELECT char(65);
A
引入版本: 2.3.0
6、char_length
语法
sql
char_length(expr)
说明
返回字符串的字符数或二进制数据的字节数,计入结尾空格和二进制零。
示例
sql
> SELECT char_length('Spark SQL ');
10
引入版本: 2.3.0
7、character_length
语法
sql
character_length(expr)
说明
返回字符串的字符数或二进制数据的字节数,计入结尾空格和二进制零。
示例
sql
> SELECT character_length('Spark SQL ');
10
引入版本: 2.3.0
8、chr
语法
sql
chr(expr)
说明
返回给定数值的二进制等效值对应的 ASCII 字符。
示例
sql
> SELECT chr(65);
A
引入版本: 2.3.0
9、collate
语法
sql
collate(expr, collationName)
说明
为指定表达式标记给定的排序规则。
示例
sql
> SELECT COLLATION('Spark SQL' collate UTF8_LCASE);
SYSTEM.BUILTIN.UTF8_LCASE
引入版本: 4.0.0
10、collation
语法
sql
collation(expr)
说明
返回指定表达式的排序规则名称。
示例
sql
> SELECT collation('Spark SQL');
SYSTEM.BUILTIN.UTF8_BINARY
引入版本: 4.0.0
11、concat_ws
语法
sql
concat_ws(sep[, str | array(str)]+)
说明
使用分隔符拼接多个字符串或字符串数组,并跳过 NULL 值。
示例
sql
> SELECT concat_ws(' ', 'Spark', 'SQL');
Spark SQL
引入版本: 1.5.0
12、contains
语法
sql
contains(left, right)
说明
判断左侧字符串或二进制数据是否包含右侧内容,任一参数为 NULL 时返回 NULL。
示例
sql
> SELECT contains('Spark SQL', 'Spark');
true
引入版本: 3.3.0
13、decode
语法
sql
decode(bin, charset)
说明
使用指定字符集解码二进制数据;也支持按搜索值匹配并返回对应结果的重载用法。
示例
sql
> SELECT decode(encode('abc', 'utf-8'), 'utf-8');
abc
引入版本: 1.5.0
14、elt
语法
sql
elt(n, input1, input2, ...)
说明
返回从 1 开始计数的第 n 个输入值。
示例
sql
> SELECT elt(1, 'scala', 'java');
scala
引入版本: 2.0.0
15、encode
语法
sql
encode(str, charset)
说明
使用指定字符集将字符串编码为二进制数据。
示例
sql
> SELECT encode('abc', 'utf-8');
abc
引入版本: 1.5.0
16、endswith
语法
sql
endswith(left, right)
说明
检查左侧字符串或二进制数据是否以右侧内容结尾;存在 NULL 参数时返回 NULL。
示例
sql
> SELECT endswith('Spark SQL', 'SQL');
true
引入版本: 3.3.0
17、find_in_set
语法
sql
find_in_set(str, str_array)
说明
返回字符串在逗号分隔字符串列表中的位置(从 1 开始),未找到或查找值含逗号时返回 0。
示例
sql
> SELECT find_in_set('ab','abc,b,ab,c,def');
3
引入版本: 1.5.0
18、format_number
语法
sql
format_number(expr1, expr2)
说明
将数值按指定小数位数或数字格式模式进行格式化。
示例
sql
> SELECT format_number(12332.123456, 4);
12,332.1235
引入版本: 1.5.0
19、format_string
语法
sql
format_string(strfmt, obj, ...)
说明
使用 printf 风格格式字符串生成格式化字符串。
示例
sql
> SELECT format_string("Hello World %d %s", 100, "days");
Hello World 100 days
引入版本: 1.5.0
20、initcap
语法
sql
initcap(str)
说明
将字符串每个单词的首字母转换为大写,其余字母转换为小写;单词由空白字符分隔。
示例
sql
> SELECT initcap('sPark sql');
Spark Sql
引入版本: 1.5.0
21、instr
语法
sql
instr(str, substr)
说明
返回子字符串首次出现的位置,索引从 1 开始。
示例
sql
> SELECT instr('SparkSQL', 'SQL');
6
引入版本: 1.5.0
22、is_valid_utf8
语法
sql
is_valid_utf8(str)
说明
判断输入是否是有效的 UTF-8 字符串。
示例
sql
> SELECT is_valid_utf8('Spark');
true
引入版本: 4.0.0
23、lcase
语法
sql
lcase(str)
说明
将字符串所有字母转换为小写。
示例
sql
> SELECT lcase('SparkSql');
sparksql
引入版本: 1.0.1
24、left
语法
sql
left(str, len)
说明
返回字符串最左侧的 len 个字符;len 小于或等于 0 时返回空字符串。
示例
sql
> SELECT left('Spark SQL', 3);
Spa
引入版本: 2.3.0
25、len
语法
sql
len(expr)
说明
返回字符串字符数或二进制数据字节数,包括尾部空格与二进制零。
示例
sql
> SELECT len('Spark SQL ');
10
引入版本: 3.4.0
26、length
语法
sql
length(expr)
说明
返回字符串字符数或二进制数据字节数,包括尾部空格与二进制零。
示例
sql
> SELECT length('Spark SQL ');
10
引入版本: 1.5.0
27、levenshtein
语法
sql
levenshtein(str1, str2[, threshold])
说明
计算两个字符串间的 Levenshtein 编辑距离;指定阈值且距离超过阈值时返回 -1。
示例
sql
> SELECT levenshtein('kitten', 'sitting');
3
引入版本: 1.5.0
28、locate
语法
sql
locate(substr, str[, pos])
说明
在指定起始位置之后查找子字符串第一次出现的位置,位置从 1 开始。
示例
sql
> SELECT locate('bar', 'foobarbar');
4
引入版本: 1.5.0
29、lower
语法
sql
lower(str)
说明
将字符串全部转换为小写。
示例
sql
> SELECT lower('SparkSql');
sparksql
引入版本: 1.0.1
30、lpad
语法
sql
lpad(str, len[, pad])
说明
将字符串从左侧填充至指定长度;长度不足时用 pad 填充,超过时截断。
示例
sql
> SELECT lpad('hi', 5, '??');
???hi
引入版本: 1.5.0
31、ltrim
语法
sql
ltrim(str)
说明
删除字符串开头的空格。
示例
sql
> SELECT ltrim(' SparkSQL ');
SparkSQL
引入版本: 1.5.0
32、luhn_check
语法
sql
luhn_check(str )
说明
按 Luhn 校验算法判断数字字符串是否有效。
示例
sql
> SELECT luhn_check('8112189876');
true
引入版本: 3.5.0
33、make_valid_utf8
语法
sql
make_valid_utf8(str)
说明
有效 UTF-8 原样返回;无效字节序列替换为 Unicode 替换字符 U+FFFD。
示例
sql
> SELECT make_valid_utf8('Spark');
Spark
引入版本: 4.0.0
34、mask
语法
sql
mask(input[, upperChar, lowerChar, digitChar, otherChar])
说明
按照指定的替换字符掩码处理输入字符串的大小写字母、数字及其他字符。
示例
sql
> SELECT mask('abcd-EFGH-8765-4321');
xxxx-XXXX-nnnn-nnnn
引入版本: 3.4.0
35、octet_length
语法
sql
octet_length(expr)
说明
返回字符串数据或二进制数据的字节数。
示例
sql
> SELECT octet_length('Spark SQL');
9
引入版本: 2.3.0
36、overlay
语法
sql
overlay(input, replace, pos[, len])
说明
从指定位置起,将输入字符串中指定长度的内容替换为另一字符串。
示例
sql
> SELECT overlay('Spark SQL' PLACING '_' FROM 6);
Spark_SQL
引入版本: 3.0.0
37、position
语法
sql
position(substr, str[, pos])
说明
从指定位置开始查找子字符串首次出现的位置,索引从 1 开始。
示例
sql
> SELECT position('bar', 'foobarbar');
4
引入版本: 2.3.0
38、printf
语法
sql
printf(strfmt, obj, ...)
说明
使用 printf 风格格式字符串生成格式化字符串。
示例
sql
> SELECT printf("Hello World %d %s", 100, "days");
Hello World 100 days
引入版本: 1.5.0
39、quote
语法
sql
quote(str)
说明
将字符串包裹在单引号内,并对其中的单引号加反斜杠转义。
示例
sql
> SELECT quote('Don\'t');
'Don\'t'
引入版本: 4.1.0
40、randstr
语法
sql
randstr(length[, seed])
说明
从数字和大小写英文字母中均匀随机选择字符,生成指定长度的字符串;可指定随机种子。
示例
sql
> SELECT randstr(3, 0) AS result;
ceV
引入版本: 4.0.0
41、regexp_count
语法
sql
regexp_count(str, regexp)
说明
返回 Java 正则表达式在输入字符串中匹配的次数。
示例
sql
> SELECT regexp_count('Steven Jones and Stephen Smith are the best players', 'Ste(v|ph)en');
2
引入版本: 3.4.0
42、regexp_extract
语法
sql
regexp_extract(str, regexp[, idx])
说明
返回字符串中首次匹配正则表达式且对应指定捕获组的内容。
示例
sql
> SELECT regexp_extract('100-200', '(\\d+)-(\\d+)', 1);
100
引入版本: 1.5.0
43、regexp_extract_all
语法
sql
regexp_extract_all(str, regexp[, idx])
说明
返回字符串内所有匹配正则表达式指定捕获组的内容,形成数组。
示例
sql
> SELECT regexp_extract_all('100-200, 300-400', '(\\d+)-(\\d+)', 1);
["100","300"]
引入版本: 3.1.0
44、regexp_instr
语法
sql
regexp_instr(str, regexp)
说明
返回字符串中首次匹配正则表达式的起始位置(从 1 开始),未匹配返回 0。
示例
sql
> SELECT regexp_instr(r"\abc", r"^\\abc$");
1
引入版本: 3.4.0
45、regexp_replace
语法
sql
regexp_replace(str, regexp, rep[, position])
说明
将字符串中匹配正则表达式的所有子字符串替换为给定内容。
示例
sql
> SELECT regexp_replace('100-200', '(\\d+)', 'num');
num-num
引入版本: 1.5.0
46、regexp_substr
语法
sql
regexp_substr(str, regexp)
说明
返回字符串中匹配正则表达式的子字符串;未匹配则返回 NULL。
示例
sql
> SELECT regexp_substr('Steven Jones and Stephen Smith are the best players', 'Ste(v|ph)en');
Steven
引入版本: 3.4.0
47、repeat
语法
sql
repeat(str, n)
说明
返回将指定字符串重复 n 次得到的字符串。
示例
sql
> SELECT repeat('123', 2);
123123
引入版本: 1.5.0
48、replace
语法
sql
replace(str, search[, replace])
说明
替换字符串中所有与 search 匹配的内容;省略 replace 时删除匹配内容。
示例
sql
> SELECT replace('ABCabc', 'abc', 'DEF');
ABCDEF
引入版本: 2.3.0
49、right
语法
sql
right(str, len)
说明
返回字符串最右侧 len 个字符;len 小于或等于 0 时返回空字符串。
示例
sql
> SELECT right('Spark SQL', 3);
SQL
引入版本: 2.3.0
50、rpad
语法
sql
rpad(str, len[, pad])
说明
从右侧将字符串填充至指定长度;输入超过目标长度时截断。
示例
sql
> SELECT rpad('hi', 5, '??');
hi???
引入版本: 1.5.0
51、rtrim
语法
sql
rtrim(str)
说明
删除字符串结尾的空格。
示例
sql
> SELECT rtrim(' SparkSQL ');
SparkSQL
引入版本: 1.5.0
52、sentences
语法
sql
sentences(str[, lang[, country]])
说明
将字符串拆分为句子数组,每个句子由词语数组表示。
示例
sql
> SELECT sentences('Hi there! Good morning.');
[["Hi","there"],["Good","morning"]]
引入版本: 1.5.0
53、soundex
语法
sql
soundex(str)
说明
返回字符串的 Soundex 语音编码。
示例
sql
> SELECT soundex('Miller');
M460
引入版本: 1.5.0
54、space
语法
sql
space(n)
说明
返回由 n 个空格构成的字符串。
示例
sql
> SELECT concat(space(2), '1');
1
引入版本: 1.5.0
55、split
语法
sql
split(str, regex, limit)
说明
根据正则表达式将字符串拆分成数组,可通过 limit 限制结果长度。
示例
sql
> SELECT split('oneAtwoBthreeC', '[ABC]');
["one","two","three",""]
引入版本: 1.5.0
56、split_part
语法
sql
split_part(str, delimiter, partNum)
说明
按分隔符拆分字符串并返回指定的部分(从 1 开始;负索引从末尾算起)。
示例
sql
> SELECT split_part('11.12.13', '.', 3);
13
引入版本: 3.3.0
57、startswith
语法
sql
startswith(left, right)
说明
判断字符串或二进制数据是否以指定内容开头;任一参数为 NULL 时返回 NULL。
示例
sql
> SELECT startswith('Spark SQL', 'Spark');
true
引入版本: 3.3.0
58、substr
语法
sql
substr(str, pos[, len])
说明
返回从 pos 位置开始、长度为 len 的字符串子串或二进制片段。
示例
sql
> SELECT substr('Spark SQL', 5);
k SQL
引入版本: 1.5.0
59、substring
语法
sql
substring(str, pos[, len])
说明
返回从 pos 位置开始、长度为 len 的字符串子串或二进制片段。
示例
sql
> SELECT substring('Spark SQL', 5);
k SQL
引入版本: 1.5.0
60、substring_index
语法
sql
substring_index(str, delim, count)
说明
返回字符串中指定次数分隔符之前或之后的部分;count 为负数时从右侧计算。
示例
sql
> SELECT substring_index('www.apache.org', '.', 2);
www.apache
引入版本: 1.5.0
61、to_binary
语法
sql
to_binary(str[, fmt])
说明
按指定格式将输入字符串转换为二进制值,支持 hex、utf-8、utf8 和 base64。
示例
sql
> SELECT to_binary('abc', 'utf-8');
abc
引入版本: 3.3.0
62、to_char
语法
sql
to_char(expr, format)
说明
根据给定数字、日期时间或二进制格式模式将表达式转换为字符串;转换失败会报错。
示例
sql
> SELECT to_char(454, '999');
454
引入版本: 3.4.0
63、to_number
语法
sql
to_number(expr, fmt)
说明
按指定数字格式模式将字符串转换为数值;转换失败会报错。
示例
sql
> SELECT to_number('454', '999');
454
引入版本: 3.3.0
64、to_varchar
语法
sql
to_varchar(expr, format)
说明
按给定格式模式将数值、日期时间或二进制表达式转换为字符串。
示例
sql
> SELECT to_varchar(454, '999');
454
引入版本: 3.5.0
65、translate
语法
sql
translate(input, from, to)
说明
把输入字符串中出现在 from 中的字符替换为 to 中对应位置的字符。
示例
sql
> SELECT translate('AaBbCc', 'abc', '123');
A1B2C3
引入版本: 1.5.0
66、trim
语法
sql
trim(str)
说明
删除字符串两端的空格,也支持从两端或单侧删除指定字符。
示例
sql
> SELECT trim(' SparkSQL ');
SparkSQL
引入版本: 1.5.0
67、try_to_binary
语法
sql
try_to_binary(str[, fmt])
说明
执行与 to_binary 相同的转换,但转换失败时返回 NULL 而不是报错。
示例
sql
> SELECT try_to_binary('abc', 'utf-8');
abc
引入版本: 3.3.0
68、try_to_number
语法
sql
try_to_number(expr, fmt)
说明
按照指定数字格式将字符串转换为数值;不匹配格式时返回 NULL。
示例
sql
> SELECT try_to_number('454', '999');
454
引入版本: 3.3.0
69、try_validate_utf8
语法
sql
try_validate_utf8(str)
说明
有效 UTF-8 字符串原样返回,否则返回 NULL。
示例
sql
> SELECT try_validate_utf8('Spark');
Spark
引入版本: 4.0.0
70、ucase
语法
sql
ucase(str)
说明
将字符串全部转换为大写。
示例
sql
> SELECT ucase('SparkSql');
SPARKSQL
引入版本: 1.0.1
71、unbase64
语法
sql
unbase64(str)
说明
将 Base64 字符串转换为二进制数据。
示例
sql
> SELECT unbase64('U3BhcmsgU1FM');
Spark SQL
引入版本: 1.5.0
72、upper
语法
sql
upper(str)
说明
将字符串全部转换为大写。
示例
sql
> SELECT upper('SparkSql');
SPARKSQL
引入版本: 1.0.1
73、validate_utf8
语法
sql
validate_utf8(str)
说明
有效 UTF-8 字符串原样返回,否则抛出异常。
示例
sql
> SELECT validate_utf8('Spark');
Spark
引入版本: 4.0.0
74、||
语法
sql
expr1 || expr2
说明
返回两个表达式拼接后的结果。
示例
sql
> SELECT 'Spark' || 'SQL';
SparkSQL
引入版本: 2.3.0