全部產品
Search
文件中心

Simple Log Service:字串函數

更新時間:Jun 30, 2024

本文介紹字串函數的基本文法和樣本。

Log Service支援如下字串函數。

重要 在Log Service分析語句中,表示字串的字元必須使用單引號('')包裹,無符號包裹或被雙引號("")包裹的字元表示欄位名或列名。例如:'status'表示字串status,status"status"表示日誌欄位status。

函數名稱

文法

說明

支援SQL

支援SPL

chr函數

chr(x)

將ASCII碼轉換為字元。

codepoint函數

codepoint(x)

將字元轉換為ASCII碼。

concat函數

concat(x, y...)

將多個字串拼接成一個字串。

from_utf8函數

from_utf8(x)

將二進位字串解碼為UTF-8編碼格式,並使用預設字元U+FFFD替換無效的UTF-8字元。

from_utf8(x, replace_string)

將二進位字串解碼為UTF-8編碼格式,並使用自訂字串替換無效的UTF-8字元。

length函數

length(x)

計算字串的長度。

levenshtein_distance函數

levenshtein_distance(x, y)

計算xy之間的最小編輯距離。

×

lower函數

lower(x)

將字串轉換為小寫形式。

lpad函數

lpad(x, length, lpad_string)

在字串的開頭填充指定字元,直到指定長度後返回結果字串。

ltrim函數

ltrim(x)

刪除字串開頭的空格。

normalize函數

normalize(x)

使用NFC格式將字串格式化。

×

position函數

position(sub_string in x)

返回目標子串在字串中的位置。

×

replace函數

replace(x, sub_string )

刪除字串中匹配的字元。

replace(x, sub_string, replace_string)

將字串中所匹配的字元替換為其他指定字元。

reverse函數

reverse(x)

返回反向順序的字串。

rpad函數

rpad(x, length, rpad_string)

在字串的尾部填充指定字元,直到指定長度後返回結果字串。

rtrim函數

rtrim(x)

刪除字串中結尾的空格。

split函數

split(x, delimeter)

使用指定的分隔字元拆分字串,並返回子串集合。

×

split(x, delimeter, limit)

通過指定的分隔字元拆分字串並使用limit限制字串拆分的個數,然後返回拆分後的子串集合。

×

split_part函數

split_part(x, delimeter, part)

使用指定的分隔字元拆分字串,並返回指定位置的內容。

split_to_map函數

split_to_map(x, delimiter01, delimiter02)

使用指定的第一個分隔字元拆分字串,然後再使用指定的第二個分隔字元進行第二次拆分。

×

strpos函數

strpos(x, sub_string)

返回目標子串在字串中的位置。與position(sub_string in x)函數等價。

substr函數

substr(x, start)

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

substr(x, start, length)

返回字串中指定位置的子串,並指定子串長度。

to_utf8函數

to_utf8(x)

將字串轉換為UTF-8編碼格式。

trim函數

trim(x)

刪除字串中開頭和結尾的空格。

upper函數

upper(x)

將字串轉化為大寫形式。

chr函數

chr函數用於將ASCII碼轉換為字元。

文法

chr(x)

參數說明

參數

說明

x

ASCII碼。

傳回值類型

varchar類型。

樣本

判斷region欄位值的首字母是否是c開頭,其中99為ASCII碼,代表小寫字母c。

  • 欄位範例

    region:cn-shanghai
  • 查詢和分析語句(調試

    * | SELECT
      substr(region, 1, 1) = chr(99)
  • 查詢和分析結果chr

codepoint函數

codepoint函數用於將字元轉換為ASCII碼。

文法

codepoint(x)

參數說明

參數

說明

x

參數值為varchar類型。

傳回值類型

integer類型。

樣本

判斷region欄位值的首字母是否是c開頭,其中99為ASCII碼,代表小寫字母c。

  • 欄位範例

    upstream_status:200
  • 查詢和分析語句(調試

    * | SELECT
      codepoint(cast (substr(region, 1, 1) AS char(1))) = 99
  • 查詢和分析結果codepoint

concat函數

concat函數用於將多個字串拼接成一個字串。

文法

concat(x, y...)

參數說明

參數

說明

x

參數值為varchar類型。

y

參數值為varchar類型。

傳回值類型

varchar類型。

樣本

region欄位和request_method欄位的值拼接為一個字串。

  • 欄位範例

    region:cn-shanghai
    time:14/Jul/2021:02:19:40
  • 查詢和分析語句(調試

    * | SELECT
      concat(region, '-', time)
  • 查詢和分析結果concat函數

from_utf8函數

from_utf8函數用於將二進位字串解碼為UTF-8編碼格式。

文法

  • 使用預設字元U+FFFD替換無效的UTF-8字元。

    from_utf8(x)
  • 使用自訂字元替換無效的UTF-8字元。

    from_utf8(x,replace_string)

參數說明

參數

說明

x

參數值為binary類型。

replace_string

用於替換的字串。只能為單個字元或空格。

傳回值類型

varchar類型。

樣本

  • 將二進位字串0x80解碼為UTF-8編碼格式,並使用預設字元U+FFFD替換返回結果中無效的UTF-8字元。U+FFFD顯示形式為�。

    • 查詢和分析語句(調試

      * | SELECT
        from_utf8(from_base64('0x80'))
    • 查詢和分析結果from_utf8

  • 將二進位字串0x80解碼為UTF-8編碼格式,並使用0替換返回結果中無效的UTF-8字元。

    • 查詢和分析語句(調試

      * | SELECT
        from_utf8(from_base64('0x80'), '0')
    • 查詢和分析結果from_utf8

length函數

length函數用於計算字串的長度。

文法

length(x)

參數說明

參數

說明

x

參數值為varchar類型。

傳回值類型

bigint類型。

樣本

計算http_user_agent欄位值的長度。

  • 欄位範例

    http_user_agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2
  • 查詢和分析語句(調試

    * | SELECT
      length(http_user_agent)
  • 查詢和分析結果length函數

levenshtein_distance函數

levenshtein_distance函數用於計算兩個字串的最小編輯距離。

文法

levenshtein_distance(x, y)

參數說明

參數

說明

x

參數值為varchar類型。

y

參數值為varchar類型。

傳回值類型

bigint類型。

樣本

查詢instance_id欄位值和owner_id欄位值的最小編輯距離。

  • 欄位範例

    instance_id:i-01
    owner_id:owner-01
  • 查詢和分析語句(調試

    * | SELECT
      levenshtein_distance(owner_id, instance_id)
  • 查詢和分析結果levenshtein_distance

lower函數

lower函數用於將字串轉換為小寫形式。

文法

lower(x)

參數說明

參數

說明

x

參數值為varchar類型。

傳回值類型

varchar類型。

樣本

request_method欄位的值轉換為小寫形式。

  • 欄位範例

    request_method:GET
  • 查詢和分析語句(調試

    * | SELECT
      lower(request_method)
  • 查詢和分析結果lower函數

lpad函數

lpad函數用於在目標字串的開頭填充指定的字元,直到指定長度後返回結果字串。

文法

lpad(x, length, lpad_string)

參數說明

參數

說明

x

參數值為varchar類型。

length

整數,用於指定結果字串的長度。

  • 當字串的長度小於length時,在字串的開頭填充指定的字元。

  • 當字串的長度大於length時,只返回字串中的length個字元。

lpad_string

新填充的字元。

傳回值類型

varchar類型。

樣本

instance_id欄位值的長度補充到10位,不足10位時,在欄位值的開頭補充0。

  • 欄位範例

    instance_id:i-01
  • 查詢和分析語句(調試

    * | SELECT
      lpad(instance_id, 10, '0')
  • 查詢和分析結果lpad

ltrim函數

ltrim函數用於刪除字串中開頭的空格。

文法

ltrim(x)

參數說明

參數

說明

x

參數值為varchar類型。

傳回值類型

varchar類型。

樣本

刪除region欄位值開頭的空格。

  • 欄位範例

    region: cn-shanghai
  • 查詢和分析語句(調試

    * | SELECT
      ltrim(region)
  • 查詢和分析結果ltrim

normalize函數

normalize函數使用NFC格式將字串格式化。

文法

normalize(x)

參數說明

參數

說明

x

參數值為varchar類型。

傳回值類型

varchar類型。

樣本

使用NFC格式將字串schön格式化。

  • 查詢和分析語句(調試

    * | SELECT
      normalize('schön')
  • 查詢和分析結果normalize

position函數

position函數用於查詢目標子串在字串中的位置。

文法

position(sub_string in x)

參數說明

參數

說明

sub_string

目標子串。

x

參數值為varchar類型。

傳回值類型

int類型,從1開始。如果字串中不存在目標子串,則返回0。

樣本

查詢子串cnregion欄位值中位置。

  • 欄位範例

    region:cn-shanghai
  • 查詢和分析語句(調試

    * | SELECT
      position('cn' in region)
  • 查詢和分析結果position函數

replace函數

replace函數用於刪除字串中所匹配的字元或者將字串中所匹配的字元替換為其他指定字元。

文法

  • 刪除字串中所匹配的字元。

    replace(x, sub_string)
  • 將字串中所匹配的字元替換為其他指定字元。

    replace(x, sub_string, replace_string)

參數說明

參數

說明

x

參數值為varchar類型。

sub_string

目標子串。

replace_string

用於替換的子串。

傳回值類型

varchar類型。

樣本

  • 樣本1:將region欄位值中的cn替換為中國

    • 欄位樣本

      region:cn-shanghai
    • 查詢和分析語句(調試

      * | select
        replace(region, 'cn', '中國')
    • 查詢和分析結果replace

  • 樣本2:刪除region欄位值中的cn-

    • 欄位樣本

      region:cn-shanghai
    • 查詢和分析語句(調試

      * | select
        replace(region, 'cn-')
    • 查詢和分析結果replace

reverse函數

reverse函數用於返回反向順序的字串。

文法

reverse(x)

參數說明

參數

說明

x

參數值為varchar類型。

傳回值類型

varchar類型。

樣本

request_method欄位值反向排序。

  • 欄位範例

    request_method:GET
  • 查詢和分析語句(調試

    * | SELECT
      reverse(request_method)
  • 查詢和分析結果reverse

rpad函數

rpad函數用於在字串的尾部填充指定的字元,直到指定長度後返回結果字串。

文法

rpad(x, length, rpad_string)

參數說明

參數

說明

x

參數值為varchar類型。

length

整數,用於指定結果字串的長度。

  • 當字串的長度小於length時,在字串的尾部填充指定的字元。

  • 當字串的長度大於length時,只返回字串中的length個字元。

rpad_string

新填充的字元。

傳回值類型

varchar類型。

樣本

instance_id欄位值的長度補充到10位,不足10位時,在欄位值的尾部補充0。

  • 欄位範例

    instance_id:i-01
  • 查詢和分析語句(調試

    * | SELECT
      rpad(instance_id, 10, '0')
  • 查詢和分析結果rpad

rtrim函數

rtrim函數用於刪除字串中結尾的空格。

文法

rtrim(x)

參數說明

參數

說明

x

參數值為varchar類型。

傳回值類型

varchar類型。

樣本

刪除instance_id欄位值中結尾的空格。

  • 欄位範例

    instance_id:i-01 
  • 查詢和分析語句(調試

    * | SELECT
      rtrim(instance_id)
  • 查詢和分析結果rtrim

split函數

split函數用於通過指定的分隔字元拆分字串,並返回拆分後的子串集合。

文法

  • 通過指定的分隔字元拆分字串,並返回拆分後的子串集合。

    split(x, delimeter)
  • 通過指定的分隔字元拆分字串並使用limit限制字串拆分的個數,然後返回拆分後的子串集合。

    split(x,delimeter,limit)

參數說明

參數

說明

x

參數值為varchar類型。

delimeter

分隔字元。

limit

限制字串拆分的個數,大於0的整數。

傳回值類型

array類型。

樣本

  • 樣本1:使用正斜線(/)將request_uri欄位的值拆分成4個子串,並返回子串的集合。

    • 欄位範例

      request_uri:/request/path-1/file-9
    • 查詢和分析語句(調試

      * | SELECT
        split(request_uri, '/')
    • 查詢和分析結果split

  • 樣本2:使用正斜線(/)將request_uri欄位的值拆分成3個子串,並返回子串的集合。

    • 欄位範例

      request_uri:/request/path-1/file-9
    • 查詢和分析語句(調試

      * | SELECT
        split(request_uri, '/', 3)
    • 查詢和分析結果split

split_part函數

split_part函數通過指定的分隔字元拆分字串,並返回指定位置的內容。

文法

split_part(x, delimeter, part)

參數說明

參數

說明

x

參數值為varchar類型。

delimeter

分隔字元。

part

大於0的整數。

傳回值類型

varchar類型。

樣本

使用英文問號(?)拆分request_uri欄位的值並返回第一個子串(即檔案路徑部分),然後統計不同路徑對應的請求數量。

  • 欄位範例

    request_uri: /request/path-2/file-6?name=value&age=18
    request_uri: /request/path-2/file-0?name=value&age=18
    request_uri: /request/path-3/file-2?name=value&age=18
  • 查詢和分析語句(調試

    * | SELECT
      count(*) AS PV,
      split_part(request_uri, '?', 1) AS Path
    GROUP BY
      Path
    ORDER BY
      pv DESC
  • 查詢和分析結果TOP3訪問地址

split_to_map函數

split_to_map函數用於使用指定的第一個分隔字元拆分字串,然後再使用指定的第二個分隔字元進行第二次拆分。

文法

split_to_map(x, delimiter01, delimiter02)

參數說明

參數

說明

x

參數值為varchar類型。

delimeter01

分隔字元。

delimeter02

分隔字元。

傳回值類型

map類型。

樣本

使用英文逗號(,)和英文冒號(:)拆分time欄位的值,返回結果為MAP類型。

  • 欄位範例

    time:upstream_response_time:"80", request_time:"40"
  • 查詢和分析語句

    * | SELECT
      split_to_map(time, ',', ':')
  • 查詢和分析結果split_to_map

strpos函數

strpos函數用於返回目標子串在字串中的位置。與position函數等價。

文法

strpos(x, sub_string)

參數說明

參數

說明

x

參數值為varchar類型。

sub_string

目標子串。

傳回值類型

int類型,從1開始。如果字串中不存在目標子串,則返回0。

樣本

返回字母H在server_protocol欄位值中的位置。

  • 查詢和分析語句(調試

    * | SELECT
      strpos(server_protocol, 'H')
  • 查詢和分析結果strpos

substr函數

substr函數用於返回字串中指定位置的子串。

文法

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

    substr(x, start)
  • 返回字串中指定位置的子串,並指定子串長度。

    substr(x,start,length)

參數說明

參數

說明

x

參數值為varchar類型。

start

開始提取子串的位置,從1開始。

length

子串的長度。

傳回值類型

varchar類型。

樣本

提取server_protocol欄位值中的前4個字元(即HTTP部分),然後統計HTTP協議對應的請求數量。

  • 欄位範例

    server_protocol:HTTP/2.0
  • 查詢和分析語句(調試

    * | SELECT
      substr(server_protocol, 1, 4) AS protocol,
      count(*) AS count
    GROUP BY
      server_protocol
  • 查詢和分析結果substr

to_utf8函數

to_utf8函數用於將字串轉換為UTF-8編碼格式。

文法

to_utf8(x)

參數說明

參數

說明

x

參數值為varchar類型。

傳回值類型

varbinary類型。

樣本

將字串log轉換為UTF-8編碼格式。

  • 查詢和分析語句(調試

    * | SELECT
      to_utf8('log')
  • 查詢和分析結果to_utf8

trim函數

trim函數用於刪除字串中開頭和結尾的空格。

文法

trim(x)

參數說明

參數

說明

x

參數值為varchar類型。

傳回值類型

varchar類型。

樣本

刪除instance_id欄位值的開頭和結尾的空格。

  • 欄位範例

    instance_id: i-01 
  • 查詢和分析語句(調試

    * | SELECT
      trim(instance_id)
  • 查詢和分析結果rtrim

upper函數

upper函數用於將目標字串轉化為大寫形式。

文法

upper(x)

參數說明

參數

說明

x

參數值為varchar類型。

傳回值類型

varchar類型。

樣本

region欄位值轉換為大寫形式。

  • 欄位範例

    region:cn-shanghai
  • 查詢和分析語句(調試

    * | SELECT
      upper(region)
  • 查詢和分析結果upper函數