すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:文字列関数

最終更新日:Dec 31, 2025

このトピックでは、文字列関数の基本的な構文と例について説明します。

Simple Log Service は、次の文字列関数をサポートしています。

重要 分析文で文字列を使用する場合は、文字列をシングルクォーテーション ('') で囲む必要があります。囲まれていない、またはダブルクォーテーション ("") で囲まれている文字列は、フィールド名または列名を示します。たとえば、'status' は status 文字列を示し、status または "status" は status ログフィールドを示します。

関数名

構文

説明

SQL サポート

SPL サポート

chr 関数

chr(x)

ASCII コードを文字に変換します。

codepoint 関数

codepoint(x)

文字を ASCII コードに変換します。

concat 関数

concat(x, y...)

複数の文字列を 1 つの文字列に連結します。

from_utf8 関数

from_utf8(x)

バイナリ文字列を UTF-8 エンコード形式にデコードし、無効な UTF-8 文字をデフォルト文字 U+FFFD に置き換えます。

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)

指定された最初の区切り文字を使用して文字列を分割し、次に指定された 2 番目の区切り文字を使用して文字列を再度分割します。

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)

文字列を大文字に変換します。

csv_extract_map 関数

csv_extract_map(x, delimeter, quote, keys)

ターゲット文字列から 1 行の CSV 情報を抽出します。

×

ilike 関数

ilike(x, pattern)

文字列が指定された文字パターンに一致するかどうかをチェックします。このチェックでは大文字と小文字は区別されません。

str_uuid 関数

str_uuid()

ランダムな 128 ビット ID を生成し、それを文字列形式で返します。

×

gzip_compress 関数

gzip_compress(data, compression_level)

文字列オブジェクトを受け取り、GZIP アルゴリズムを使用して圧縮し、圧縮されたバイナリストリームを返します。

×

gzip_decompress 関数

gzip_decompress(binary_data)

GZIP で圧縮されたバイナリデータ (Varbinary) を受け取り、それを解凍します。

×

chr 関数

chr 関数は、ASCII コードを文字に変換します。

構文

chr(x)

パラメーター

パラメーター

説明

x

ASCII コード。

戻り値の型

varchar。

region フィールドの値が c で始まるかどうかを確認します。ASCII コード 99 は小文字の c を表します。

  • フィールド例

    region:cn-shanghai
  • クエリ・分析文 (テスト)

    * | SELECT
      substr(region, 1, 1) = chr(99)
  • クエリ・分析結果chr

codepoint 関数

codepoint 関数は、文字を ASCII コードに変換します。

構文

codepoint(x)

パラメーター

パラメーター

説明

x

値は varchar 型です。

戻り値の型

integer。

region フィールドの値が c で始まるかどうかを確認します。ASCII コード 99 は小文字の c を表します。

  • フィールド例

    upstream_status:200
  • クエリ・分析文 (テスト)

    * | SELECT
      codepoint(cast (substr(region, 1, 1) AS char(1))) = 99
  • クエリ・分析結果codepoint

concat 関数

concat 関数は、複数の文字列を 1 つの文字列に連結します。

構文

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 エンコード形式にデコードします。

構文

  • 無効な UTF-8 文字をデフォルト文字 U+FFFD に置き換えます。

    from_utf8(x)
  • 無効な UTF-8 文字をカスタム文字に置き換えます。

    from_utf8(x,replace_string)

パラメーター

パラメーター

説明

x

値はバイナリ型です。

replace_string

置換に使用される文字列。文字列は 1 文字またはスペースのみです。

戻り値の型

varchar。

  • バイナリ文字列 0x80 を UTF-8 エンコード形式にデコードし、結果の無効な UTF-8 文字をデフォルト文字 U+FFFD に置き換えます。U+FFFD 文字は置換文字として表示されます。

    • クエリ・分析文 (テスト)

      * | SELECT
        from_utf8(from_base64('0x80'))
    • クエリ・分析結果from_utf8

  • バイナリ文字列 0x80 を UTF-8 エンコード形式にデコードし、結果の無効な UTF-8 文字を 0 に置き換えます。

    • クエリ・分析文 (テスト)

      * | 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 関数は、2 つの文字列間の最小編集距離を計算します。

構文

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 フィールドの値の先頭を 0 でパディングして、合計 10 文字にします。

  • フィールド例

    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 関数は、文字列を正規化形式 C (NFC) 形式にフォーマットします。

構文

normalize(x)

パラメーター

パラメーター

説明

x

値は varchar 型です。

戻り値の型

varchar。

文字列 schön を NFC 形式にフォーマットします。

  • クエリ・分析文 (テスト)

    * | SELECT
      normalize('schön')
  • クエリ・分析結果normalize

position 関数

position 関数は、文字列内のターゲット部分文字列の位置を返します。

構文

position(sub_string in x)

パラメーター

パラメーター

説明

sub_string

ターゲット部分文字列。

x

値は varchar 型です。

戻り値の型

int。値は 1 から始まります。ターゲット部分文字列が見つからない場合、関数は 0 を返します。

region フィールドの値から部分文字列 cn の位置を見つけます。

  • フィールド例

    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', 'China')
    • クエリ・分析結果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 フィールドの値の末尾を 0 でパディングして、合計 10 文字にします。

  • フィールド例

    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)
  • 指定された区切り文字を使用して、文字列を指定された数の部分文字列に分割します。

    split(x,delimeter,limit)

パラメーター

パラメーター

説明

x

値は varchar 型です。

delimeter

区切り文字。

limit

分割数。値は 0 より大きい整数である必要があります。

戻り値の型

データ型は配列です。

  • 例 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 関数は、2 つの指定された区切り文字を使用して文字列をキーと値のペアに分割します。

構文

split_to_map(x, delimiter01, delimiter02)

パラメーター

パラメーター

説明

x

値は varchar 型です。

delimeter01

区切り文字。

delimeter02

区切り文字。

戻り値の型

マップ。

time フィールドの値をカンマ (,) とコロン (:) を使用して分割します。結果はマップです。

  • フィールド例

    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 を返します。

server_protocol フィールドの値から文字 H の位置を見つけます。

  • クエリ・分析文 (テスト)

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

csv_extract_map 関数

csv_extract_map 関数は、ターゲット文字列から 1 行の CSV 情報を抽出します。

構文

csv_extract_map(x, delimeter, quote, keys)

パラメーター

パラメーター

説明

x

値は varchar 型です。

delimeter

CSV 区切り文字。値は varchar 型で、長さは 1 です。

quote

CSV 引用符。値は varchar 型で、長さは 1 です。

keys

CSV 情報の出力のキー名。値は配列型です。要素の数がデータ内の CSV 情報の数と異なる場合、null が返されます。

戻り値の型

map(varchar, varchar)。

content フィールドから CSV 情報を抽出します。

  • フィールド例

    content: '192.168.0.100,"10/Jun/2019:11:32:16,127 +0800",example.aliyundoc.com'
  • クエリ・分析文

    select csv_extract_map(content, ',', '"', array['ip', 'time', 'host']) as item
  • 出力データ

    image

ilike 関数

ilike 関数は、入力文字列が指定された文字パターンに一致するかどうかをチェックします。このチェックでは大文字と小文字は区別されません。

構文

ilike(x, pattern)

パラメーター

パラメーター

説明

x

値は varchar 型です。

pattern

文字列とワイルドカード文字を含む文字パターン。次の表にワイルドカード文字を示します。

  • パーセント記号 (%) は任意の数の文字を表します。

  • アンダースコア (_) は 1 文字を表します。

戻り値の型

boolean

request_uri が file-6 で終わるかどうかを確認します。

  • フィールド例

request_uri: '/request/path-2/File-6'
  • クエリ・分析文

select ilike(request_uri, '%file-6')
  • 出力データ

image.png

str_uuid 関数

str_uuid() 関数は、ランダムな 128 ビット ID を生成し、それを文字列として返します。

構文

str_uuid()

戻り値

  • 戻り値の型: VARCHAR

  • フォーマット: 32 個の 16 進数の数字と 4 つのハイフン (-) を含む標準の 36 文字の文字列。

  • 構造例: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

この関数を使用して、ステージング環境で多数の一意の識別子を迅速に生成できます。

* | extend uuid = str_uuid()

gzip_compress 関数

gzip_compress 関数は、GZIP アルゴリズムを使用して文字列オブジェクトを圧縮し、圧縮されたバイナリデータを返します。

構文

-- 方法 1: デフォルトレベル (6)
gzip_compress(data)

-- 方法 2: 指定レベル
gzip_compress(data, compression_level)

パラメーター

パラメーター

説明

data

VARCHAR

圧縮する文字列。

compression_level

BIGINT

圧縮レベル。値は 1 から 9 までの整数です。

戻り値

  • 戻り値の型VARBINARY

  • 説明: 圧縮されたバイナリデータ。

  • 例 1: 基本的な圧縮

    * | extend compress_data =  gzip_compress('Hello World')
  • 例 2: 大きなテキストの最大圧縮率

    数万語を含むログがあり、ストレージ容量が懸念される場合は、レベル 9 を使用します:

    * | extend compress_data =  gzip_compress('Hello World',9)

gzip_decompress 関数

gzip_decompress 関数は、GZIP で圧縮されたバイナリデータ (Varbinary) を解凍します。

構文

gzip_decompress(binary_data)

パラメーター

binary_data は、通常 gzip_compress によって生成される、有効な GZIP 圧縮データである必要があります。入力が標準の GZIP 形式でない場合、関数は NULL を返します。

戻り値

  • 戻り値の型VARCHAR

  • 説明: 元の解凍されたプレーンテキストのコンテンツ。


  • 単純な圧縮と展開のパイプライン:

    * | extend original_content =  gzip_decompress(gzip_compress('Hello SLS!'))
    -- 出力: "Hello SLS!"