最近更新时间:2024.04.19 11:08:49
首次发布时间:2024.01.22 17:18:37
本文介绍日志服务支持的字符串函数语法及常见场景的使用示例。
注意
日志服务产品架构升级,支持更丰富的检索分析功能。
关于 1.0 架构与 2.0 架构的具体说明,请参考日志服务架构升级通知。
说明
在日志服务分析语句(SQL 语句)中,需要使用单引号('')包裹代表字符串的字符,无符号包裹或被双引号("")包裹的字符为字段名或列名。例如'time'
代表字符串,time
或 "time"
代表字段名或列名。
函数名称 | 函数语法 | 说明 |
---|---|---|
CHR(KEY) | 将 ASCII 码转换为 ASCII 码的显示字符。 | |
CODEPOINT (KEY) | 将 ASCII 码的显示字符转换为 ASCII 码。 | |
CONCAT(KEY1, KEY2...) | 拼接多个字符串为一个字符串。 | |
FROM_UTF8(KEY) | 将二进制字符串解码为 UTF-8 字符,且使用默认字符 U+FFFD 替换无效字符。 | |
FROM_UTF8(KEY, replace_string) | 将二进制字符串解码为 UTF-8 字符,且使用自定义字符串替换无效字符。 | |
LENGTH(KEY) | 计算字符串的长度。 | |
LEVENSHTEIN_DISTANCE(KEY1, KEY2) | 计算两个字符串的最小编辑距离。 | |
LOWER(KEY) | 将字符串转换为小写形式。 | |
LPAD(KEY, length, lpad_string) | 在指定字符串的开头填充字符,填充到指定长度后返回结果字符串。 | |
LTRIM(KEY) | 删除字符串开头的空格。 | |
NORMALIZE(KEY) | 将字符串格式化为 NFC 格式。 | |
POSITION(sub_string in KEY) | 返回指定的子字符串在字符串中的位置。 | |
REPLACE(KEY, sub_string ) | 删除指定的子字符串。 | |
REPLACE (KEY, sub_string, replace_string) | 将指定的子字符串替换为其他字符串。 | |
REVERSE(KEY) | 按照反向顺序返回字符串。 | |
RPAD(KEY, length, lpad_string) | 在指定字符串的结尾填充字符,填充到指定长度后返回结果字符串。 | |
RTRIM(KEY) | 删除字符串结尾的空格。 | |
SPLIT(KEY, delimeter) | 使用指定的分隔符对字符串进行拆分,并返回拆分后的子字符串合集。 | |
SPLIT(KEY, delimeter, limit) | 使用指定的分隔符对字符串进行拆分并使用 limit 参数限制拆分的个数,然后返回拆分后的子字符串集合。 | |
SPLIT_PART(KEY,delimeter,index) | 使用指定的分隔符对字符串进行拆分,并返回 index 位置的子字符串。 | |
SPLIT_TO_MAP(KEY, delimiter01, delimiter02) | 使用指定的第一个分隔符拆分字符串,再使用指定的第二个分隔符将第一次拆分结果中的字符串拆分为键值对模式。 | |
STRPOS(KEY, sub_string) | 用于查找子字符串在指定字符串中第一次出现的位置,从 1 开始计数。 | |
SUBSTR(KEY, start) | 提取从指定位置到字符串结尾的子字符串。 | |
SUBSTR(KEY, start, length) | 从指定位置开始提取子字符串,提取的长度为 | |
TO_UTF8(KEY) | 将字符串转换为 UTF-8 格式。 | |
TRIM(KEY) | 删除字符中开头和结尾的空格。 | |
UPPER(KEY) | 将字符串转化为大写形式。 |
CHR 函数用于将 ASCII 码转换为字符。
语法格式
CHR(KEY)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 ASCII 码。 |
返回值说明
返回值为 Varchar 类型。
场景
先判断 url_test
字段值的首字母是否为ASCII 码 104,即小写字母 h,然后再进行分组统计。
日志样例
检索和分析语句
* | SELECT SUBSTR(url_test, 1, 1)=CHR(104), COUNT(1) GROUP BY 1
检索和分析结果
CODEPOINT 函数用于将 ASCII 码的显示字符转换为 ASCII 码。
语法格式
CODEPOINT(KEY)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 ASCII 码的显示字符。 |
返回值说明
返回 ASCII 码。返回值为 Integer 类型。
场景
判断 url_test
字段值的首字母是否是 h 开头后分组,其中 104 为 ASCII 码,代表小写字母 h。
日志样例
检索和分析语句
* | SELECT CODEPOINT(CAST (SUBSTR(url_test, 1, 1) AS CHAR(1))) =104, COUNT(1) GROUP BY 1
检索和分析结果
CONCAT 函数用于拼接多个字符串为一个字符串。
语法格式
CONCAT(KEY1, KEY2...)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
返回值说明
返回值为 Varchar 类型。
场景
将 timestamp_str
字段和 url_test
字段的值拼接为一个字符串。
日志样例
检索和分析语句
* | SELECT CONCAT(timestamp_str,'-',url_test)
检索和分析结果
FROM_UTF8 函数用于将二进制字符串解码为 UTF-8 字符。
语法格式
如果返回无效字符,将使用默认字符 U+FFFD 替换无效的 UTF-8 字符。
from_utf8(string)
如果返回无效字符,将使用自定义字符替换无效的 UTF-8 字符。
from_utf8(string,replace_string)
参数说明
参数 | 说明 |
---|---|
string | 值为 Binary 类型。 |
replace_string | 用于替换的字符串。只能为单个字符或空格。 |
返回值说明
返回值为 Varchar 类型。
场景
将 0x40
解码为 UTF-8 字符,并使用默认字符 U+FFFD 替换返回结果中的无效字符。U+FFFD 显示形式为�。
检索和分析语句
* | SELECT FROM_UTF8(FROM_BASE64('0x40'))
检索和分析结果
LENGTH 函数用于计算字符串的长度。
语法格式
LENGTH(KEY)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
返回值说明
返回值为 Bigint 类型。
场景
计算 url_test
字段值的长度后再分组统计。
日志样例
检索和分析语句
* | SELECT LENGTH(url_test),COUNT(1) GROUP BY 1
检索和分析结果
LEVENSHTEIN_DISTANCE 函数用于计算两个字符串的最小编辑距离。
语法格式
LEVENSHTEIN_DISTANCE(KEY1, KEY2)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
返回值说明
返回值为 Bigint 类型。
场景
计算 Action
列中字符串和 Method
列中字符串的最小编辑距离。
日志样例
检索和分析语句
* | SELECT LEVENSHTEIN_DISTANCE(Action, Method)
检索和分析结果
LOWER 函数用于将字符串转换为小写形式。
语法格式
LOWER(KEY)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
返回值说明
返回值为 Varchar 类型。
场景
将 up_eng_string
字段的值转换为小写形式后再分组统计。
日志样例
检索和分析语句
* | SELECT LOWER(up_eng_string), COUNT(1) GROUP BY 1
检索和分析结果
LPAD 函数用于在指定字符串的开头填充字符,填充到指定长度后返回结果字符串。
语法格式
LPAD(KEY, length, lpad_string)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
length | 结果字符串的长度。
|
lpad_string | 填充的新字符。 |
返回值说明
返回值为 Varchar 类型。
场景
在 Method
字段值的开头填充字符串 abc
,直到总长度为 8 位。
日志样例
检索和分析语句
* | SELECT LPAD(Method,8,'abc')
检索和分析结果
LTRIM 函数用于删除字符串中开头的空格。
语法格式
LTRIM(KEY)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
返回值说明
返回值为 Varchar 类型。
场景
删除 fixed_10_bit_string_has_space
字段值开头的空格。
日志样例
检索和分析语句
* | SELECT LTRIM(fixed_10_bit_string_has_space)
检索和分析结果
NORMALIZE 函数用于将字符串格式化为 NFC 格式。
语法格式
NORMALIZE(string)
参数说明
参数 | 说明 |
---|---|
string | 字段、表达式,其值为 Varchar 类型。 |
返回值说明
返回值为 Varchar 类型。
场景
将 Method
字段值格式化为 NFC 格式。
日志样例
检索和分析语句
* | SELECT NORMALIZE(Method)
检索和分析结果
POSITION 函数用于返回指定的子字符串在字符串中的位置。
语法格式
POSITION(sub_string in KEY)
参数说明
参数 | 说明 |
---|---|
sub_string | 子字符串。 |
KEY | 字段、表达式,其值为 Varchar 类型。 |
返回值说明
返回值为 Int 类型,从 1 开始标记。如果字段值中不存在目标子字符串,则返回 0。
场景
查询子字符串 age
在 url_test
字段值中位置后再分组统计。
日志样例
检索和分析语句
* | SELECT POSITION('age' in url_test),count(1) group by 1
检索和分析结果
REPLACE 函数用于删除指定的子字符串或者将指定的子字符串替换为其他字符串。
语法格式
删除指定的子字符串。
REPLACE(KEY, sub_string)
将指定的子字符串替换为其他字符串。
REPLACE(KEY, sub_string, replace_string)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
sub_string | 目标子字符串。 |
replace_string | 用于替换的字符串。 |
返回值说明
返回值为 Varchar 类型。
示例1
场景
将 url_test
字段值中的xxx
替换为 regan
。
日志样例
检索和分析语句
* | SELECT REPLACE(url_test,'xxx','regan')
检索和分析结果
示例2
场景
删除 url_test
字段值中的 age=18&
。
日志样例
检索和分析语句
* | SELECT REPLACE(url_test,'age=18&')
检索和分析结果
REVERSE 函数用于按照反向顺序返回字符串。
语法格式
REVERSE(KEY)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
场景
将 url_test
字段值反向排序。
日志样例
检索和分析语句
* | SELECT REVERSE(url_test)
检索和分析结果
RPAD 函数用于在指定字符串的结尾填充字符,填充到指定长度后返回结果字符串。
语法格式
RPAD(KEY, length, rpad_string)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
length | 结果字符串的长度。
|
rpad_string | 填充的新字符。 |
返回值说明
返回值为 Varchar 类型。
场景
在 Method
字段值的结尾填充字符串 abc
,直到总长度为 8 位。
日志样例
检索和分析语句
* | SELECT RPAD(Method,8,'abc')
检索和分析结果
RTRIM 函数用于删除字符串结尾的空格。
语法格式
RTRIM(KEY)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
返回值说明
返回值为 Varchar 类型。
场景
删除 fixed_10_bit_string_has_space
字段值中结尾的空格。
日志样例
检索和分析语句
* | SELECT RTRIM(fixed_10_bit_string_has_space)
检索和分析结果
SPLIT 函数使用指定的分隔符对字符串进行拆分,并返回拆分后的子字符串集合。
语法格式
使用指定的分隔符对字符串进行拆分,并返回拆分后的子字符串集合。
SPLIT(KEY, delimeter)
使用指定的分隔符对字符串进行拆分并使用 limit 参数限制拆分的个数,然后返回拆分后的子字符串集合。
SPLIT(KEY,delimeter,limit)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
delimeter | 分隔符。 |
limit | 限制字符串拆分的个数,需为大于 0 的整数。 |
返回值说明
返回值为 Array 类型。
示例1
场景
使用半角句号(.)将 __source__
字段的值拆分成多个子字符串,并返回子字符串的集合。
日志样例
检索和分析语句
* | SELECT SPLIT(__source__,'.')
检索和分析结果
示例2
场景
使用半角句号(.)将 __source__
字段的值拆分成 3 个子字符串,并返回子字符串的集合。
日志样例
检索和分析语句
* | SELECT SPLIT(__source__,'.', 3)
检索和分析结果
SPLIT_PART 函数使用指定的分隔符对字符串进行拆分,并返回 index 位置的子字符串。
语法格式
SPLIT_PART(KEY,delimeter,index)
参数说明
参数 | 说明 |
---|---|
x | 字段、表达式,其值为 Varchar 类型。 |
delimeter | 分隔符。 |
index | 大于0的整数。 |
返回值说明
返回值类型为 Varchar 类型。
场景
使用半角句号(.)将__source__
字段的值拆分成多个子字符串,并返回位于位置 2 的子字符串。
日志样例
检索和分析语句
* | SELECT SPLIT_PART(__source__,'.', 2)
检索和分析结果
SPLIT_TO_MAP 函数使用指定的第一个分隔符拆分字符串,再使用指定的第二个分隔符将第一次拆分结果中的字符串拆分为键值对模式。
语法格式
SPLIT_TO_MAP(KEY, delimiter01, delimiter02)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
delimeter | 分隔符。 |
返回值说明
返回值为 Map 类型。
场景
使用半角问号(?)和下划线(_)将 URL
字段的值拆分成多个子字符串。
日志样例
检索和分析语句
* | SELECT SPLIT_TO_MAP(URL, '?', '_')
检索和分析结果
STRPOS 函数用于查找子字符串在指定字符串中第一次出现的位置,从 1 开始计数,如果指定的字符串中不存在该子字符串,则返回 0。
语法格式
STRPOS(KEY, sub_string)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
sub_string | 子字符串。 |
返回值说明
返回值为 Int 类型。
场景
查看字符串 OS
在 Method
字段值中第一次出现的位置。
日志样例
检索和分析语句
* | SELECT STRPOS(Method, 'OS')
检索和分析结果
SUBSTR 函数用于提取指定位置的子字符串。
语法格式
提取从指定位置开始到字符串结尾的子字符串。
SUBSTR(KEY, start)
从指定位置开始提取子字符串,提取的长度为 length
。
SUBSTR(KEY, start, length)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
start | 指定子字符串的位置,从 1 开始。 |
length | 指定子字符串的长度。 |
返回值说明
返回值为 Varchar 类型。
场景
提取 Method
字段值中从位置 2 开始的子字符串。
日志样例
检索和分析语句
* | SELECT SUBSTR(Method, 2)
检索和分析结果
场景
提取 Method
字段值中从位置 2 开始的子字符串,提取的长度为 2。
日志样例
检索和分析语句
* | SELECT SUBSTR(Method, 2, 2)
检索和分析结果
TO_UTF8 函数用于将字符串转换为 UTF-8 格式。
语法格式
TO_UTF8(KEY)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
返回值说明
返回值为 Varbinary 类型。
场景
将字符串 log
转换为 UTF-8 格式。
检索和分析语句
* | SELECT TO_UTF8('log')
检索和分析结果
TRIM 函数用于删除字符串开头和结尾的空格。
语法格式
TRIM(KEY)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
返回值说明
返回值为 Varchar 类型。
场景
删除 fixed_10_bit_string_has_space
字段值的开头和结尾的空格。
日志样例
检索和分析语句
* | SELECT TRIM(fixed_10_bit_string_has_space)
检索和分析结果
UPPER 函数用于将字符串转换为大写形式。
语法格式
UPPER(KEY)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Varchar 类型。 |
返回值说明
返回值为 Varchar 类型。
场景
将 url_test
字段值转换为大写形式。
日志样例
检索和分析语句
* | SELECT upper(url_test)
检索和分析结果