SQL字符串函数
功能描述
SQL提供字符串函数,用于对字符类型的数据执行拼接、大小写转换等操作,具体请参见表1。
SQL语法中,字符必须被单引号('')包裹,无符号或双引号("")包裹的为字段或表名称,如:'msg'表示字符串msg,msg或"msg"表示日志结构化msg字段。
语法格式
SELECT (fieldname1 || fieldname2) AS fieldname1_fieldname2
字符串函数语句
语句 |
说明 |
示例 |
---|---|---|
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次。
- 字段样例
field4:is
- 查询和分析语句
select field4,REPEAT(field4,3)
- 查询和分析结果
表2 查询和分析结果 field4
EXPR$1
Is
isisis