You need to enable JavaScript to run this app.
导航

字符串函数

最近更新时间2024.04.19 11:08:49

首次发布时间2024.01.22 17:18:37

本文介绍日志服务支持的字符串函数语法及常见场景的使用示例。

注意

日志服务产品架构升级,支持更丰富的检索分析功能。

  • 如果控制台提示新一代架构正式发布信息,表示您使用的是 2.0 架构,可参考本文档使用相关功能。
  • 如果控制台未提示新一代架构正式发布信息,表示您使用的是 1.0 架构,可参考检索分析(1.0 架构)中的检索概述等文档使用相关功能。

关于 1.0 架构与 2.0 架构的具体说明,请参考日志服务架构升级通知

函数列表

说明

在日志服务分析语句(SQL 语句)中,需要使用单引号('')包裹代表字符串的字符,无符号包裹或被双引号("")包裹的字符为字段名或列名。例如'time' 代表字符串,time"time" 代表字段名或列名。

函数名称

函数语法

说明

CHR 函数

CHR(KEY)

将 ASCII 码转换为 ASCII 码的显示字符。

CODEPOINT 函数

CODEPOINT (KEY)

将 ASCII 码的显示字符转换为 ASCII 码。

CONCAT 函数

CONCAT(KEY1, KEY2...)

拼接多个字符串为一个字符串。

FROM_UTF8 函数

FROM_UTF8(KEY)

将二进制字符串解码为 UTF-8 字符,且使用默认字符 U+FFFD 替换无效字符。

FROM_UTF8(KEY, replace_string)

将二进制字符串解码为 UTF-8 字符,且使用自定义字符串替换无效字符。

LENGTH 函数

LENGTH(KEY)

计算字符串的长度。

LEVENSHTEIN_DISTANCE 函数

LEVENSHTEIN_DISTANCE(KEY1, KEY2)

计算两个字符串的最小编辑距离。

LOWER 函数

LOWER(KEY)

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

LPAD 函数

LPAD(KEY, length, lpad_string)

在指定字符串的开头填充字符,填充到指定长度后返回结果字符串。

LTRIM 函数

LTRIM(KEY)

删除字符串开头的空格。

NORMALIZE 函数

NORMALIZE(KEY)

将字符串格式化为 NFC 格式。

POSITION 函数

POSITION(sub_string in KEY)

返回指定的子字符串在字符串中的位置。

REPLACE 函数

REPLACE(KEY, sub_string )

删除指定的子字符串。

REPLACE (KEY, sub_string, replace_string)

将指定的子字符串替换为其他字符串。

REVERSE 函数

REVERSE(KEY)

按照反向顺序返回字符串。

RPAD 函数

RPAD(KEY, length, lpad_string)

在指定字符串的结尾填充字符,填充到指定长度后返回结果字符串。

RTRIM 函数

RTRIM(KEY)

删除字符串结尾的空格。

SPLIT 函数

SPLIT(KEY, delimeter)

使用指定的分隔符对字符串进行拆分,并返回拆分后的子字符串合集。

SPLIT(KEY, delimeter, limit)

使用指定的分隔符对字符串进行拆分并使用 limit 参数限制拆分的个数,然后返回拆分后的子字符串集合。

SPLIT_PART 函数

SPLIT_PART(KEY,delimeter,index)

使用指定的分隔符对字符串进行拆分,并返回 index 位置的子字符串。

SPLIT_TO_MAP 函数

SPLIT_TO_MAP(KEY, delimiter01, delimiter02)

使用指定的第一个分隔符拆分字符串,再使用指定的第二个分隔符将第一次拆分结果中的字符串拆分为键值对模式。

STRPOS 函数

STRPOS(KEY, sub_string)

用于查找子字符串在指定字符串中第一次出现的位置,从 1 开始计数。

SUBSTR 函数

SUBSTR(KEY, start)

提取从指定位置到字符串结尾的子字符串。

SUBSTR(KEY, start, length)

从指定位置开始提取子字符串,提取的长度为 length

TO_UTF8 函数

TO_UTF8(KEY)

将字符串转换为 UTF-8 格式。

TRIM 函数

TRIM(KEY)

删除字符中开头和结尾的空格。

UPPER 函数

UPPER(KEY)

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

CHR 函数

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 函数

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 函数用于拼接多个字符串为一个字符串。

函数语法

  • 语法格式

    CONCAT(KEY1, KEY2...)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Varchar 类型。

  • 返回值说明
    返回值为 Varchar 类型。

函数示例

  • 场景
    timestamp_str 字段和 url_test 字段的值拼接为一个字符串。

  • 日志样例

  • 检索和分析语句

    * | SELECT CONCAT(timestamp_str,'-',url_test)
    
  • 检索和分析结果

FROM_UTF8 函数

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 函数用于计算字符串的长度。

函数语法

  • 语法格式

    LENGTH(KEY)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Varchar 类型。

  • 返回值说明
    返回值为 Bigint 类型。

函数示例

  • 场景
    计算 url_test 字段值的长度后再分组统计。

  • 日志样例

  • 检索和分析语句

    * | SELECT LENGTH(url_test),COUNT(1) GROUP BY 1
    
  • 检索和分析结果

LEVENSHTEIN_DISTANCE 函数

LEVENSHTEIN_DISTANCE 函数用于计算两个字符串的最小编辑距离。

函数语法

  • 语法格式

    LEVENSHTEIN_DISTANCE(KEY1, KEY2)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Varchar 类型。

  • 返回值说明
    返回值为 Bigint 类型。

函数示例

  • 场景
    计算 Action 列中字符串和 Method 列中字符串的最小编辑距离。

  • 日志样例
    图片

  • 检索和分析语句

    * | SELECT LEVENSHTEIN_DISTANCE(Action, Method)
    
  • 检索和分析结果
    图片

LOWER 函数

LOWER 函数用于将字符串转换为小写形式。

函数语法

  • 语法格式

    LOWER(KEY)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Varchar 类型。

  • 返回值说明
    返回值为 Varchar 类型。

函数示例

  • 场景
    up_eng_string 字段的值转换为小写形式后再分组统计。

  • 日志样例

  • 检索和分析语句

    * | SELECT LOWER(up_eng_string), COUNT(1) GROUP BY 1
    
  • 检索和分析结果

LPAD 函数

LPAD 函数用于在指定字符串的开头填充字符,填充到指定长度后返回结果字符串。

函数语法

  • 语法格式

    LPAD(KEY, length, lpad_string)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Varchar 类型。

    length

    结果字符串的长度。

    • 当原始字符串长度小于length 时,系统将在字符串的开头填充指定的字符串。
    • 当原始字符串长度大于length 时,系统返回字符串中的前 length 个字符,不会填充新字符。

    lpad_string

    填充的新字符。

  • 返回值说明
    返回值为 Varchar 类型。

函数示例

  • 场景
    Method 字段值的开头填充字符串 abc,直到总长度为 8 位。

  • 日志样例
    图片

  • 检索和分析语句

    * | SELECT LPAD(Method,8,'abc')
    
  • 检索和分析结果
    图片

LTRIM 函数

LTRIM 函数用于删除字符串中开头的空格。

函数语法

  • 语法格式

    LTRIM(KEY)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Varchar 类型。

  • 返回值说明
    返回值为 Varchar 类型。

函数示例

  • 场景
    删除 fixed_10_bit_string_has_space 字段值开头的空格。

  • 日志样例

  • 检索和分析语句

    * | SELECT LTRIM(fixed_10_bit_string_has_space)
    
  • 检索和分析结果

NORMALIZE 函数

NORMALIZE 函数用于将字符串格式化为 NFC 格式。

函数语法

  • 语法格式

    NORMALIZE(string)
    
  • 参数说明

    参数

    说明

    string

    字段、表达式,其值为 Varchar 类型。

  • 返回值说明
    返回值为 Varchar 类型。

函数示例

  • 场景
    Method 字段值格式化为 NFC 格式。

  • 日志样例
    图片

  • 检索和分析语句

    * | SELECT NORMALIZE(Method)
    
  • 检索和分析结果
    图片

POSITION 函数

POSITION 函数用于返回指定的子字符串在字符串中的位置。

函数语法

  • 语法格式

    POSITION(sub_string in KEY)
    
  • 参数说明

    参数

    说明

    sub_string

    子字符串。

    KEY

    字段、表达式,其值为 Varchar 类型。

  • 返回值说明
    返回值为 Int 类型,从 1 开始标记。如果字段值中不存在目标子字符串,则返回 0。

函数示例

  • 场景
    查询子字符串 ageurl_test 字段值中位置后再分组统计。

  • 日志样例

  • 检索和分析语句

    * | SELECT POSITION('age' in url_test),count(1) group by 1
    
  • 检索和分析结果

REPLACE 函数

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 函数用于按照反向顺序返回字符串。

函数语法

  • 语法格式

    REVERSE(KEY)
    
  • 参数说明

参数

说明

KEY

字段、表达式,其值为 Varchar 类型。

  • 返回值说明
    返回值为 Varchar 类型。

函数示例

  • 场景
    url_test 字段值反向排序。

  • 日志样例

  • 检索和分析语句

    * | SELECT REVERSE(url_test)
    
  • 检索和分析结果

RPAD 函数

RPAD 函数用于在指定字符串的结尾填充字符,填充到指定长度后返回结果字符串。

函数语法

  • 语法格式

    RPAD(KEY, length, rpad_string)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Varchar 类型。

    length

    结果字符串的长度。

    • 当原始字符串长度小于length 时,系统将在字符串的结尾填充指定的字符串。
    • 当原始字符串长度大于length 时,系统返回字符串中的前 length 个字符,不会填充新字符。

    rpad_string

    填充的新字符。

  • 返回值说明
    返回值为 Varchar 类型。

函数示例

  • 场景
    Method 字段值的结尾填充字符串 abc,直到总长度为 8 位。

  • 日志样例
    图片

  • 检索和分析语句

    * | SELECT RPAD(Method,8,'abc')
    
  • 检索和分析结果
    图片

RTRIM 函数

RTRIM 函数用于删除字符串结尾的空格。

函数语法

  • 语法格式

    RTRIM(KEY)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Varchar 类型。

  • 返回值说明
    返回值为 Varchar 类型。

函数示例

  • 场景
    删除 fixed_10_bit_string_has_space 字段值中结尾的空格。

  • 日志样例

  • 检索和分析语句

    * | SELECT RTRIM(fixed_10_bit_string_has_space)
    
  • 检索和分析结果

SPLIT 函数

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 函数

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 函数使用指定的第一个分隔符拆分字符串,再使用指定的第二个分隔符将第一次拆分结果中的字符串拆分为键值对模式。

函数语法

  • 语法格式

    SPLIT_TO_MAP(KEY, delimiter01, delimiter02)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Varchar 类型。

    delimeter

    分隔符。

  • 返回值说明
    返回值为 Map 类型。

函数示例

  • 场景
    使用半角问号(?)和下划线(_)将 URL 字段的值拆分成多个子字符串。

  • 日志样例
    图片

  • 检索和分析语句

    * | SELECT SPLIT_TO_MAP(URL, '?', '_')
    
  • 检索和分析结果
    图片

STRPOS 函数

STRPOS 函数用于查找子字符串在指定字符串中第一次出现的位置,从 1 开始计数,如果指定的字符串中不存在该子字符串,则返回 0。

函数语法

  • 语法格式

    STRPOS(KEY, sub_string)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Varchar 类型。

    sub_string

    子字符串。

  • 返回值说明
    返回值为 Int 类型。

函数示例

  • 场景
    查看字符串 OSMethod 字段值中第一次出现的位置。

  • 日志样例
    图片

  • 检索和分析语句

    * | SELECT STRPOS(Method, 'OS')
    
  • 检索和分析结果
    图片

SUBSTR 函数

SUBSTR 函数用于提取指定位置的子字符串。

函数语法

  • 语法格式

    • 提取从指定位置开始到字符串结尾的子字符串。

      SUBSTR(KEY, start)
      
    • 从指定位置开始提取子字符串,提取的长度为 length

      SUBSTR(KEY, start, length)
      
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Varchar 类型。

    start

    指定子字符串的位置,从 1 开始。

    length

    指定子字符串的长度。

  • 返回值说明
    返回值为 Varchar 类型。

函数示例

  • 示例1
    • 场景
      提取 Method 字段值中从位置 2 开始的子字符串。

    • 日志样例
      图片

    • 检索和分析语句

      * | SELECT SUBSTR(Method, 2)
      
    • 检索和分析结果
      图片

  • 示例2
    • 场景
      提取 Method 字段值中从位置 2 开始的子字符串,提取的长度为 2。

    • 日志样例
      图片

    • 检索和分析语句

      * | SELECT SUBSTR(Method, 2, 2)
      
    • 检索和分析结果
      图片

TO_UTF8 函数

TO_UTF8 函数用于将字符串转换为 UTF-8 格式。

函数语法

  • 语法格式

    TO_UTF8(KEY)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Varchar 类型。

  • 返回值说明
    返回值为 Varbinary 类型。

函数示例

  • 场景
    将字符串 log 转换为 UTF-8 格式。

  • 检索和分析语句

    * | SELECT TO_UTF8('log')
    
  • 检索和分析结果
    图片

TRIM 函数

TRIM 函数用于删除字符串开头和结尾的空格。

函数语法

  • 语法格式

    TRIM(KEY)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Varchar 类型。

  • 返回值说明
    返回值为 Varchar 类型。

函数示例

  • 场景
    删除 fixed_10_bit_string_has_space 字段值的开头和结尾的空格。

  • 日志样例

  • 检索和分析语句

    * | SELECT TRIM(fixed_10_bit_string_has_space)
    
  • 检索和分析结果

UPPER 函数

UPPER 函数用于将字符串转换为大写形式。

函数语法

  • 语法格式

    UPPER(KEY)
    
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Varchar 类型。

  • 返回值说明
    返回值为 Varchar 类型。

函数示例

  • 场景
    url_test 字段值转换为大写形式。

  • 日志样例

  • 检索和分析语句

    * | SELECT upper(url_test)
    
  • 检索和分析结果