更新时间:2024-09-19 GMT+08:00

SQL字符串函数

功能描述

SQL提供字符串函数,用于对字符类型的数据执行拼接、大小写转换等操作,具体请参见表1

SQL语法中,字符必须被单引号('')包裹,无符号或双引号("")包裹的为字段或表名称,如:'msg'表示字符串msg,msg或"msg"表示日志结构化msg字段。

语法格式

SELECT (fieldname1 || fieldname2) AS fieldname1_fieldname2

字符串函数语句

表1 字符串函数语句

语句

说明

示例

CONCAT(expr1, expr2...)

拼接列举的所有字符串。

SELECT str1, str2, str3, CONCAT(str1, str2, str3)

WHERE str1 IS NOT NUll

TEXTCAT(expr, expr)

拼接两个字符串。

SELECT str1, str2, TEXTCAT(str1, str2)

WHERE str1 IS NOT NUll

STRING_FORMAT(pattern[, args...])

根据JAVA的String格式对字符串进行格式化。

SELECT str1, STRING_FORMAT(str1, '%s')

WHERE str1 IS NOT NUll

LENGTH(expr)

返回字符串的长度,即字符串中UTF-16字符个数。

SELECT LENGTH(str1)

WHERE str1 IS NOT NUll

LOWER(expr)

将字符串转换为小写形式。

SELECT LOWER(str1)

WHERE str1 IS NOT NUll

POSITION(string1 IN string2 [FROM fromIndex])

返回string1在string2中首次出现位置的索引。搜索从指定索引开始,如果没有指定索引,则从索引1开始。如果string1不存在于string2中,则返回0。

SELECT POSITION(str1 IN str2 FROM 5)

REGEXP_EXTRACT(expr, pattern, [index])

返回字符串中匹配指定正则表达式的子字符串。索引从1开始。如果没匹配,则返回空值。如果没有指定索引,或者索引为0,则返回第一个匹配的子字符串。如想精确匹配,请在正则表达式前后分别加上符号^和$。

SELECT REGEXP_EXTRACT(str1, '[A-Za-z]+://[A-Za-z0-9.-]+(/[^ ]*)', 5)

REGEXP_LIKE(expr, pattern)

判断字符串是否匹配指定的正则表达式。如想精确匹配,请在正则表达式前后分别加上符号^和$。该函数与LIKE语句用法类似,区别在于LIKE语句搜索的是匹配指定模式的内容。

SELECT REGEXP_LIKE(str1, '\.(jpg|jpeg|png|gif)$')

REPLACE(expr, pattern, replacement)

使用replacement替换expr中与pattern相同的子字符串。

SELECT REPLACE(expr,pattern, replacement)

STRPOS(string1, string2)

返回string2在string1中首次出现位置的索引。查找从索引1开始。如果查找没有结果,则返回0。

SELECT STRPOS(str1, str2)

WHERE str1 IS NOT NUll

AND str2 IS NOT NUll

SUBSTRING(expr, index, [length])

截取字符串。从指定索引处开始截取,结束位置由指定长度决定。长度按照UTF-16字符个数计算。

SELECT SUBSTRING(str1, 3, 10)

WHERE str1 IS NOT NUll

RIGHT(expr, [length])

从字符串最右处开始往左截取指定长度。

SELECT RIGHT(str1, 5)

WHERE str1 IS NOT NUll

LEFT(expr, [length])

从字符串最左处开始往右截取指定长度。

SELECT LEFT(str1, 5)

WHERE str1 IS NOT NUll

SUBSTR(expr, index, [length])

与SUBSTRING相同。

SELECT SUBSTR(str1, 3, 10)

WHERE str1 IS NOT NUll

UPPER(expr)

将字符串转换为大写形式。

SELECT UPPER(str1)

WHERE str1 IS NOT NUll

REVERSE(expr)

反转字符串。

SELECT REVERSE(str1)

WHERE str1 IS NOT NUll

LPAD(expr, length, chars)

在字符串左侧填充指定字符,直至字符串达到指定长度。如果指定长度小于字符串本身的长度,则按照指定长度对字符串执行截断操作。如果字符串或指定字符为空值,则返回空值。如果指定字符为空白,不会执行填充操作,但如有必要可能会删减字符。

SELECT LPAD(str1, 50, 'testStr')

WHERE str1 IS NOT NUll

RPAD(expr, length, chars)

在字符串右侧填充指定字符,直至字符串达到指定长度。如果指定长度小于字符串本身的长度,则按照指定长度对字符串执行截断操作。如果字符串或指定字符为空值,则返回空值。如果指定字符为空白,不会执行填充操作,但如有必要可能会删减字符。

SELECT RPAD(str1, 50, 'testStr')

WHERE str1 IS NOT NUll

CONTAINS_STRING(<expr>, str)

判断expr是否包含str字符串

SELECT CONTAINS_STRING(log_level,'warn')

ICONTAINS_STRING(<expr>, str)

判断expr是否包含str字符串,不区分字符串大小写

SELECT ICONTAINS_STRING(log_level,'WARN')

示例及说明

REPEAT函数

REPEAT(expr, [N])函数将expr重复N次。

  1. 字段样例

    field4:is

  2. 查询和分析语句
    select field4,REPEAT(field4,3)
  3. 查询和分析结果
    表2 查询和分析结果

    field4

    EXPR$1

    Is

    isisis