更新时间:2024-07-27 GMT+08:00

字符串函数概览

DLI所支持的字符函数如字符串函数所示。

表1 字符串函数

函数

命令格式

返回值

功能简介

ascii

ascii(string <str>)

BIGINT

返回字符串中首字符的数字值。

concat

concat(array<T> <a>, array<T> <b>[,...]),concat(string <str1>, string <str2>[,...])

ARRAY或STRING

连接多个字符串,合并为一个字符串,可以接受任意数量的输入字符串。

concat_ws

concat_ws(string <separator>, string <str1>, string <str2>[,...]),concat_ws(string <separator>, array<string> <a>)

ARRAY或STRUCT

连接多个字符串,字符串之间以指定的分隔符分隔。

char_matchcount

char_matchcount(string <str1>, string <str2>)

BIGINT

计算str1中有多少个字符出现在str2中。

encode

encode(string <str>, string <charset>)

BINARY

将str按照charset格式进行编码。

find_in_set

find_in_set(string <str1>, string <str2>)

BIGINT

查找字符串str1在以逗号(,)分隔的字符串str2中的位置,从1开始计数。

get_json_object

get_json_object(string <json>, string <path>)

STRING

根据所给路径对json对象进行解析,当json对象非法时将返回NULL。

instr

instr(string <str>, string <substr>)

INT

返回substr在str中最早出现的下标。当参数中出现NULL时,返回NULL,当str中不存在substr时返回0,注意下标从1开始。

instr1

instr1(string <str1>, string <str2>[, bigint <start_position>[, bigint <nth_appearance>]])

BIGINT

instr1函数用于计算子串str2在字符串str1中的位置。

initcap

initcap(string A)

STRING

将文本字符串转换成首字母大写其余字母小写的形式。

keyvalue

keyvalue(string <str>,[string <split1>,string <split2>,] string <key>)

STRING

用于计算将字符串str按照split1进行切分,并按split2将每组变成Key-Value对,返回key所对应的Value。

length

length(string <str>)

BIGINT

返回字符串的长度。

lengthb

lengthb(string <str>)

STRING

计算字符串str以字节为单位的长度。

levenshtein

levenshtein(string A, string B)

INT

返回两个字符串之间的Levenshtein距离,如levenshtein('kitten','sitting') =3。

locate

locate(string <substr>, string <str>[, bigint <start_pos>])

BIGINT

用于在str中查找substr的位置。

lower/lcase

lower(string A) ,lcase(string A)

STRING

将文本字符串转换成字母全部小写的形式。

lpad

lpad(string <str1>, int <length>, string <str2>)

STRING

用于返回指定长度的字符串,给定字符串str1长度小于指定长度length时,由指定字符str2从左侧填补。

ltrim

ltrim([<trimChars>,] string <str>)

STRING

删除字符串左边的空格,其他的空格保留。

parse_url

parse_url(string urlString, string partToExtract [, string keyToExtract])

STRING

返回给定URL的指定部分,partToExtract的有效值包括HOST,PATH, QUERY, REF, PROTOCOL, AUTHORITY,FILE和USERINFO。

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

当第二个参数为QUERY时,可以使用第三个参数提取特定参数的值,例如: parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY', 'k1') 返回'v1'。

printf

printf(String format, Obj... args)

STRING

将输入按特定格式打印输出。

regexp_count

regexp_count(string <source>, string <pattern>[, bigint <start_position>])

BIGINT

用于计算source中从start_position位置开始,匹配指定pattern的子串数。

regexp_extract

regexp_extract(string <source>, string <pattern>[, bigint <groupid>])

STRING

用于将字符串source按照pattern的分组规则进行字符串匹配,返回第groupid个组匹配到的字符串内容。

replace

replace(string <str>, string <old>, string <new>)

STRING

将字符串中与指定字符串匹配的子串替换为另一字符串。

regexp_replace

  • 适用于Spark2.4.5:regexp_replace(string <source>, string <pattern>, string <replace_string>)
  • 适用于Spark3.3.1:regexp_replace(string <source>, string <pattern>, string <replace_string>[, bigint <occurrence>])

STRING

  • 适用于Spark2.4.5:用于将source字符串中第occurrence次匹配pattern的子串,以及之后匹配pattern的子串,全都替换成指定字符串replace_string后,返回结果字符
  • 适用于Spark3.3.1:用于将source字符串中第occurrence次匹配pattern的子串,以及之后匹配pattern的子串,全都替换成指定字符串replace_string后,返回结果字符

regexp_replace1

regexp_replace1(string <source>, string <pattern>, string <replace_string>[, bigint <occurrence>])

STRING

将source字符串中第occurrence次匹配pattern的子串,替换成指定字符串replace_string后,返回结果字符串。

regexp_instr

regexp_instr(string <source>, string <pattern>[,bigint <start_position>[, bigint <occurrence>[, bigint <return_option>]]])

BIGINT

用于计算字符串source从start_position开始,与pattern第occurrence次匹配的子串的起始或结束位置。

regexp_substr

regexp_substr(string <source>, string <pattern>[, bigint <start_position>[, bigint <occurrence>]])

STRING

用于计算从start_position位置开始,source中第occurrence次匹配指定pattern的子串。

repeat

repeat(string <str>, bigint <n>)

STRING

重复N次字符串。

reverse

reverse(string <str>)

STRING

返回倒序字符串。

rpad

rpad(string <str1>, int <length>, string <str2>)

STRING

用于将字符串str2将字符串str1向右补足到length位。

rtrim

rtrim([<trimChars>, ]string <str>),

rtrim(trailing [<trimChars>] from <str>)

STRING

删除字符串右边的空格,其他的空格保留。

soundex

soundex(string <str>)

STRING

从str返回一个soundex字符串,如soundex('Miller')= M460。

space

space(bigint <n>)

STRING

返回指定数量的空格。

substr/substring

substr(string <str>, bigint <start_position>[, bigint <length>]) ,substring(string <str>, bigint <start_position>[, bigint <length>])

STRING

用于返回字符串str从start_position开始,长度为length的子串。

substring_index

substring_index(string <str>, string <separator>, int <count>)

STRING

用于截取字符串str第count个分隔符之前的字符串。如果count为正,则从左边开始截取。如果count为负,则从右边开始截取。

split_part

split_part(string <str>, string <separator>, bigint <start>[, bigint <end>])

STRING

用于依照分隔符separator拆分字符串str,返回从start部分到end部分的子串(闭区间)。

translate

translate(string|char|varchar input, string|char|varchar from, string|char|varchar to)

STRING

将input字符串中的所出现的字符或者字符串from用字符或者字符串to替换。例如:将abcde中的bcd替换成BCD,translate("abcde", "bcd", "BCD")

trim

trim([<trimChars>,]string <str>),

trim([BOTH] [<trimChars>] from <str>)

STRING

删除字符串两端的空格,字符之间的空格保留。

upper/ucase

upper(string A) ,ucase(string A)

STRING

将文本字符串转换成字母全部大写的形式。