文档

字符串函数

更新时间:

本文介绍Lindorm支持的字符串函数的用法及示例。

引擎与版本

字符串函数适仅用于宽表引擎,且引擎版本需为2.5.1.1及以上版本。

说明

如何查看和升级当前版本,请参见宽表引擎版本说明升级小版本

函数列表

Lindorm支持的字符串函数如下表所示:

函数

说明

CONCAT

将多个字符串拼接成一个新的字符串。

LENGTH

计算字符串的长度。

LOWER

将字符串中所有的字母都转换为小写字母。

MD5

计算指定字符串的MD5值。

SHA256

计算指定字符串的SHA256编码值。

REPLACE

将匹配指定规则的子串替换为新的字符串。

REVERSE

返回逆序的字符串。

REGEXP_REPLACE

从字符串指定位置开始,将匹配指定规则的子串替换为新的字符串。

REGEXP_SUBSTR

返回从字符串指定位置开始,匹配指定规则的子串。

SUBSTR

返回字符串中指定长度的子串。

START_WITH

判断字符串的前缀是否为指定字符串。

TRIM

删除字符串前后的空格。

UPPER

将字符串中所有的字母都转换为大写字母。

CONCAT函数

将多个字符串拼接成一个新的字符串。

语法

CONCAT('string1','string2',...,'stringN')

参数说明

参数

是否必填

说明

'string1','string2',...,'stringN'

需要拼接的字符串,多个字符串之间用英文逗号(,)分隔。

示例

将单独的字符串abc进行拼接,组成一个新的字符串abc

SELECT concat('a','b','c') AS val;

返回结果:

+--------+
| val    |
+--------+
| abc    |
+--------+

返回结果为拼接后的新字符串,且字符串中间无间隔符。

LENGTH函数

计算字符串的长度。

语法

LENGTH('string')

参数说明

参数

是否必填

说明

string

待匹配的字符串。

示例

计算字符串abc的长度。

SELECT length('abc') AS len;

返回结果:

+-----+
| len |
+-----+
| 3   |
+-----+

返回结果为3,表示字符串abc的长度为3。

LOWER函数

将字符串中所有的字母都转换为小写字母。

语法

LOWER('string')

参数说明

参数

是否必填

说明

string

待转换的字符串。

示例

  • 示例1:将字符串ABC中所有的字母都转换为小写字母。

    SELECT lower('ABC') AS val;

    返回结果:

    +--------+
    | val    |
    +--------+
    | abc    |
    +--------+

    返回结果为abc,表示已将字符串ABC中所有的大写字母都转换为小写字母abc

  • 示例2:将字符串Abc中所有的字母都转换为小写字母。

    SELECT lower('Abc') AS val;

    返回结果:

    +--------+
    | val    |
    +--------+
    | abc    |
    +--------+

    返回结果为abc,表示已将字符串Abc中所有的大写字母都转换为小写字母abc

MD5函数

计算指定字符串的MD5值。

语法

MD5('string')

参数说明

参数

是否必填

说明

string

待匹配的字符串。

示例

计算指定字符串abc的MD5值。

SELECT md5('abc') AS val;

返回结果:

+----------------------------------+
|               val                |
+----------------------------------+
| 900150983cd24fb0d6963f7d28e17f72 |
+----------------------------------+

返回结果为字符串abc的MD5值。

SHA256函数

计算指定字符串的SHA256编码值。

语法

SHA256('string')

参数说明

参数

是否必填

说明

string

待编码的字符串。

示例

假设表结构及表中数据如下:

-- 创建示例表
CREATE TABLE tb (id int, name varchar, address varchar, PRIMARY KEY(id, name)); 

-- 写入数据
UPSERT INTO tb (id, name, address) VALUES (1, 'jack',  'hz');

查询id值为1的行中对应的name列数据的SHA256编码值。

SELECT sha256(name) AS sc FROM tb WHERE id=1;

返回结果:

+------------------------------------------------------------------+
|                                sc                                |
+------------------------------------------------------------------+
| 31611159e7e6ff7843ea4627745e89225fc866621cfcfdbd40871af4413747cc |
+------------------------------------------------------------------+

返回结果为字符串jack的SHA256编码值。

REPLACE函数

将匹配指定规则的子串替换为新的字符串。

语法

REPLACE('string','from_str','to_str')

参数说明

参数

是否必填

说明

string

待匹配的字符串。

from_str

指定字符串。

to_str

替换的字符串。

示例,

  • 示例1:将字符串abc中所有匹配bc的子串都替换为cd

    SELECT replace('abc','bc','cd') AS val;

    返回结果:

    +-----+
    | val |
    +-----+
    | acd |
    +-----+

    返回结果为acd,表示已将字符串abc中匹配bc的子串替换为cd

  • 示例2:将字符串abcbc中所有匹配bc的子串都替换为cd

    SELECT replace('abcbc', 'bc', 'cd') AS val;

    返回结果:

    +-------+
    |  val  |
    +-------+
    | acdcd |
    +-------+

    返回结果为acdcd,表示已将字符串abcbc中匹配bc的子串替换为cd

REVERSE函数

返回逆序的字符串。

语法

REVERSE('string')

参数说明

参数

是否必填

说明

string

待匹配的字符串。

示例

将字符串abc逆序输出。

SELECT reverse('abc') AS val;

返回结果:

+-----+
| val |
+-----+
| cba |
+-----+

返回结果为cba ,表示已将字符串abc逆序输出。

REGEXP_REPLACE函数

从字符串指定位置开始,将匹配指定规则的子串替换为新的字符串。

语法

REGEXP_REPLACE('string',pat,rep,[pos])

参数说明

参数

是否必填

说明

string

待匹配的字符串。

pattern

正则表达式。

rep

替换的字符串。

position

开始匹配字符串的位置,取值为大于等于1的整数。不指定该参数时,默认从第1个字符开始匹配。

示例

  • 示例1:不指定pos参数。默认从第1个字符开始匹配,并将匹配b的子串替换为c

    SELECT regexp_replace('abc', 'b', 'c') AS val;

    返回结果:

    +-----+
    | val |
    +-----+
    | acc |
    +-----+

    返回结果为acc,表示已将字符串abc中匹配b的子串替换为c

  • 示例2:指定pos参数。从第2个字符开始匹配,并将匹配b的子串替换为c

    SELECT regexp_replace('abcbc', 'b', 'c', 2) AS val;

    返回结果:

    +-------+
    |  val  |
    +-------+
    | acccc |
    +-------+

acccc,表示已将字符串abcbc中第2个字符至字符串末尾匹配b的子串替换为c

  • 示例3:指定pos参数。从第3个字符开始匹配,并将匹配b的子串替换为c

    SELECT regexp_replace('abcbc', 'b', 'c', 3) AS val;

    返回结果:

    +-------+
    |  val  |
    +-------+
    | abccc |
    +-------+

    返回结果为abccc,表示已将字符串abcbc中第3个字符至字符串末尾匹配b的子串替换为c

REGEXP_SUBSTR函数

返回从字符串指定位置开始,匹配指定规则的子串。

语法

REGEXP_SUBSTR('string', pat, [pos])

参数说明

参数

是否必填

说明

string

待匹配的字符串。

pattern

正则表达式。

position

开始匹配字符串的位置,取值为大于等于1的整数。不指定该参数时,默认从第1个字符开始匹配。

示例

  • 示例1:指定pos参数,从字符串abc的第3个字符开始匹配b的子串。

     SELECT regexp_substr('abc', 'b', 3) AS val;

    返回结果:

    +-----+
    | val |
    +-----+
    |     |
    +-----+

    返回结果为,表示从字符串第3个字符开始无匹配b的子串。

  • 示例2:不指定pos参数,默认从字符串abc的第1个字符开始匹配b的子串。

    SELECT regexp_substr('abc', 'b') AS val;

    返回结果:

    +-----+
    | val |
    +-----+
    | b   |
    +-----+

    返回结果为b,表示从字符串第1个字符开始截取匹配b的子串。

SUBSTR函数

返回字符串中指定长度的子串。

语法

SUBSTR( string, pos, [len])

参数说明

参数

是否必填

说明

string

待匹配的字符串。

position

开始截取字符串的位置,取值为大于等于1的整数。

len

从左向右截取字符串的长度,取值为大于等于1的整数。不指定该参数时,则默认返回pos参数指定位置到字符串末尾的子串。

示例

  • 示例1:不指定len参数,默认返回字符串abc第2个字符到字符串末尾的子串。

    SELECT substr('abc', 2) AS val;

    返回结果:

    +-----+
    | val |
    +-----+
    | bc  |
    +-----+

    返回结果为bc,表示字符串abc第2个字符至字符串末尾的子串。

  • 示例2:指定len参数,返回字符串abc第1个字符到第2个字符的子串。

    SELECT substr('abc', 1, 2) AS val;

    返回结果:

    +-----+
    | val |
    +-----+
    | ab  |
    +-----+

    返回结果为ab,表示字符串abc第1个字符到第2个字符的子串。

START_WITH函数

判断字符串的前缀是否为指定字符串。

语法

START_WITH('string1', 'string2')

参数说明

参数

是否必填

说明

string1

待匹配的字符串。

string2

指定字符串。

示例

  • 示例1:判断字符串abc的前缀是否为指定字符串ab

    SELECT start_with('abc', 'ab') AS val;

    返回结果:

    +--------+
    | val    |
    +--------+
    | true   |
    +--------+

    返回结果为true,表示字符串abc的前缀是指定字符串ab

  • 示例2:判断字符串abc的前缀是否为指定字符串bc

    SELECT start_with('abc', 'bc') AS val;

    返回结果:

    +--------+
    | val    |
    +--------+
    | false  |
    +--------+

    返回结果为false,表示字符串abc的前缀不是指定字符串bc

TRIM函数

删除字符串前后的空格。

语法

TRIM('string')

参数说明

参数

是否必填

说明

string

待匹配的字符串。

示例

删除指定字符串 abc 前后的空格。

SELECT trim(' abc    ') AS str;

返回结果:

+-----+
| str |
+-----+
| abc |
+-----+

返回结果为删除前后空格后的结果。

UPPER函数

将字符串中所有的字母都转换为大写字母。

语法

UPPER('string')

参数说明

参数

是否必填

说明

string

待转换的字符串。

示例

  • 示例1:将字符串abc中所有的字母都转换为大写字母。

    SELECT upper('abc') AS val;

    返回结果:

    +--------+
    | val    |
    +--------+
    | ABC    |
    +--------+

    返回结果为ABC,表示已将字符串abc中所有的小写字母转换为大写字母ABC

  • 示例2:将字符串aBC中所有的字母都转换为大写字母。

    SELECT upper('aBC') AS val;

    返回结果:

    +--------+
    | val    |
    +--------+
    | ABC    |
    +--------+

    返回结果为ABC,表示已将字符串aBC中所有的小写字母都转换为大写字母ABC