String Functions(字符串函数)

文章目录


原文: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

官方条目

相关推荐
对空六课2 小时前
两个统计平台数据不同:用同一时间窗和事件样本做差异定位
大数据·前端·网络·数据库
Geeys10 小时前
拼多多单品推广完整方案(可直接落地)
大数据·人工智能
生态学者10 小时前
Global Change Biology | 森林越“步调一致”,反而越怕干旱?树木生长与叶片活动的同步之谜
大数据·人工智能·算法·r语言·微信公众平台
lsswear11 小时前
Agent 框架新手入门与实战部署指南
大数据·人工智能·算法
samFuB11 小时前
【数据集】地级市一般性转移支付、专项转移支付数据(2010-2024年)
大数据
YH行业报告分析11 小时前
2026漂白紫胶粉市场深度:EUDR合规与脱蜡路线之争如何重构天然树脂供应链?
大数据·重构
YH_Analytics12 小时前
2026-2032 食品吸液垫行业市场规模与增长预测
大数据·网络·人工智能
richdata12 小时前
鞋服品牌应该如何测算AI商品决策项目的ROI?
大数据·人工智能
tianbin91113 小时前
大模型训练与推理:API中转站在企业AI落地中的隐藏价值
大数据·后端·ai