全部產品
Search
文件中心

Simple Log Service:比較子

更新時間:Jun 09, 2026

比較子用於判斷參數的大小關係,適用於任意可比較的資料類型(double、bigint、varchar、timestamp和date)。本文介紹比較子的基本文法以及樣本。

比較子概覽

Log Service支援如下比較子。

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

運算子

文法

說明

支援SQL

支援SPL

基礎運算子

x < y

x小於y時,返回true。

x > y

x大於y時,返回true。

x <= y

x小於或等於y時,返回true。

x >= y

x大於或等於y時,返回true。

x = y

x等於y時,返回true。

x <> y

x不等於y時,返回true。

x != y

x不等於y時,返回true。

ALL運算子

x relational operator ALL(subquery)

x滿足所有條件時,返回true。

×

ANY運算子

x relational operator ANY(subquery)

x滿足任意一個條件時,返回true。

×

BETWEEN運算子

x BETWEEN y AND z

x處在yz之間時,返回true。

DISTINCT運算子

x IS DISTINCT FROM y

x不等於y時,返回true。

×

x IS NOT DISTINCT FROM y

x等於y時,返回true。

×

LIKE運算子

x LIKE pattern [escape 'escape_character']

用於匹配字串中指定的字元模式。字串區分大小寫。

SOME運算子

x relational operator SOME(subquery)

x滿足任意一個條件時,返回true。

×

GREATEST運算子

GREATEST(x, y...)

查詢xy中的最大值。

×

LEAST運算子

LEAST(x, y...)

查詢xy中的最小值。

×

NULL運算子

x IS NULL

x為null時,返回true。

x IS NOT NULL

x不為null時,返回true。

基礎運算子

基礎運算子用於比較xy的大小關係。如果邏輯成立,則返回true。

  • 文法

    文法

    說明

    x < y

    x小於y

    x > y

    x大於y

    x <= y

    x小於或等於y

    x >= y

    x大於或等於y

    x = y

    x等於y

    x <> y

    x不等於y

    x != y

    x不等於y

  • 參數說明

    參數

    說明

    x

    參數值為任意可比較的資料類型。

    y

    參數值為任意可比較的資料類型。

  • 傳回值類型

    boolean類型。

  • 樣本

    • 樣本1:查詢昨天的日誌。

      • 查詢和分析語句

        * |
        SELECT
          *
        FROM  log
        WHERE
          __time__ < to_unixtime(current_date)
          AND __time__ > to_unixtime(date_add('day', -1, current_date))
      • 查詢和分析結果:查詢結果返回日誌的多個欄位,包括 body_bytes_sentclient_iphosthttp_user_agenthttp_x_forwarded_forinstance_idinstance_namenetwork_typeowner_idreferer。每條日誌記錄展示請求體大小、用戶端 IP、訪問網域名稱、User-Agent、執行個體 ID 與名稱、網路類型等訪問資訊。

    • 樣本2:電商公司A通過訪問日誌中的mobile欄位和client_ip欄位,分析哪些客戶的電話號碼所在地和其訪問電商網站的IP地址所在地不同。

      • 欄位範例

        mobile:1881111****
        client_ip:192.168.2.0
      • 查詢和分析語句

        * |
        SELECT
          mobile,
          client_ip,
          count(*) AS PV
        WHERE
          mobile_city(mobile) != ip_to_city(client_ip)
          AND ip_to_city(client_ip) != ''
        GROUP BY
          client_ip,
          mobile
        ORDER BY
          PV DESC
      • 查詢和分析結果:查詢結果返回兩條記錄,mobileclient_ip 列敏感資訊已脫敏顯示,對應 PV 值分別為 13 和 12。

ALL運算子

ALL運算子用於判斷x是否滿足所有條件。如果滿足,則返回true。

  • 文法

    x relational operator ALL(subquery)
  • 參數說明

    參數

    說明

    x

    參數值為任意可比較的資料類型。

    比較子

    <、>、<=、>=、=、<>、!=

    重要

    ALL運算子必須緊跟在基礎運算子(<、>、<=、>=、=、<>、!=)後面。

    subquery

    SQL子查詢。

  • 傳回值類型

    boolean類型。

  • 樣本

    執行個體i-01相關的所有請求的狀態代碼是否都為200。

    • 欄位範例

      instance_id:i-01
      status:200
    • 查詢和分析語句

      * | select 200 = ALL(select status where instance_id='i-01')
    • 查詢和分析結果返回 _col0 值為 false,表示並非所有 instance_id 為 i-01 的日誌的 status 值都等於 200。

ANY運算子

ANY運算子用於判斷x是否滿足任意一個條件。如果滿足,則返回true。

  • 文法

    x relational operator ANY(subquery)
  • 參數說明

    參數

    說明

    x

    參數值為任意可比較的資料類型。

    比較子

    <、>、<=、>=、=、<>、!=

    重要

    ANY運算子必須緊跟在比較子(<、>、<=、>=、=、<>、!=)後面。

    subquery

    SQL子查詢。

  • 傳回值類型

    boolean類型。

  • 樣本

    執行個體i-01相關的請求中,是否存在請求狀態代碼為200的請求。

    • 欄位範例

      instance_id:i-01
      status:200
    • 查詢和分析語句

      * | SELECT 200 = ANY(SELECT status WHERE instance_id='i-01')
    • 查詢和分析結果返回單列 _col0,值為 true,表示滿足條件。

BETWEEN運算子

BETWEEN用於判斷x是否處在yz之間。如果是,則返回true。yz之間的範圍為閉區間。

  • 文法

    x BETWEEN y AND z
  • 參數說明

    參數

    說明

    x

    參數值為任意可比較的資料類型。

    y

    參數值為任意可比較的資料類型。

    z

    參數值為任意可比較的資料類型。

    重要
    • xyz的資料類型必須一致。

    • xyz中任意一個的值包含null,則返回結果為null。

  • 傳回值類型

    boolean類型。

  • 樣本

    • 樣本1:判斷status欄位值是否在[200,299]範圍內。

      • 查詢和分析語句

        * | SELECT status BETWEEN 200 AND 299
      • 查詢和分析結果:返回表格中 _col0 列共三行,值均為 true,表示對應日誌的 status 欄位值均在 200 到 299 之間。

    • 樣本2:計算status欄位值不在[200,299]範圍內的日誌條數。

      • 查詢和分析語句

        * | SELECT count(*) AS count FROM log WHERE status NOT BETWEEN 200 AND 299
      • 查詢和分析結果顯示 count 值為 250。

DISTINCT運算子

DISTINCT運算子用於判斷xy是否相同。

  • 文法

    • IS DISTINCT FROM表示x不等於y時,返回true。

      x IS DISTINCT FROM y
    • IS NOT DISTINCT FROM表示x等於y時,返回true。

      x IS NOT DISTINCT FROM y
  • 參數說明

    參數

    說明

    x

    參數值為任意可比較的資料類型。

    y

    參數值為任意可比較的資料類型。

與基礎運算子(=、<>)對比,區別在於DISTINCT運算子可用於null的對比。

x

y

x = y

x <> y

x IS DISTINCT FROM y

x IS NOT DISTINCT FROM y

1

1

true

false

false

true

1

2

false

true

true

false

1

null

null

null

true

false

null

null

null

null

false

true

  • 傳回值類型

    boolean類型。

  • 樣本

    將0和null進行對比。

    • 查詢和分析語句

      * | select 0 IS DISTINCT FROM null
    • 查詢和分析結果為 true,即0與null是不同的值。

LIKE運算子

LIKE運算子用於匹配字串中指定的字元模式。字串區分大小寫。

  • 文法

    x LIKE pattern [escape 'escape_character']
  • 參數說明

    參數

    說明

    x

    參數值為任意可比較的資料類型。

    pattern

    字元模式,包括字串和萬用字元。萬用字元說明如下:

    • 百分比符號(%)代表任意個字元。

    • 底線 (_)代表單個字元。

    escape_character

    對字元模式中的萬用字元進行轉義的字元運算式。

    說明

    LIKE運算子主要用於日誌的精準查詢。更多資訊,請參見如何精準查詢日誌

  • 傳回值類型

    boolean類型。

  • 樣本

    SQL

    • 樣本1:查詢request_uri欄位值是以file-8或file-6結尾的日誌。

      • 欄位範例

        request_uri:/request/path-2/file-6
      • 查詢和分析語句

        *|SELECT * WHERE request_uri LIKE '%file-8' OR request_uri LIKE '%file-6'
      • 查詢和分析結果:執行該查詢語句後,返回 request_urifile-8file-6 結尾的日誌記錄,每條記錄包含 remote_addrremote_userrequest_lengthrequest_methodrequest_timerequest_urischemeserver_protocolslbidstatustime_local 等欄位。

    • 樣本2:判斷request_uri欄位值是否以file-6結尾。

      • 欄位範例

        request_uri:/request/path-2/file-6
      • 查詢和分析語句

        * | SELECT request_uri LIKE '%file-6'
      • 查詢和分析結果返回 _col0 列,值為 true,表示 request_uri 的值匹配 %file-6 模式。

    SPL

    • 樣本1:查詢request_uri欄位值是以file-8或file-6結尾的日誌。

      • 欄位範例

    request_uri:/request/path-2/file-6
    • SPL語句

    *|WHERE request_uri LIKE '%file-8' OR request_uri LIKE '%file-6'
    • SPL結果

    查詢結果返回了所有 request_uri 欄位值以 file-8 或 file-6 結尾的日誌條目。

    • 樣本2:判斷request_uri欄位值是否以file-6結尾。

      • 欄位範例

    request_uri:/request/path-2/file-6
    • SPL語句

    * | extend a = request_uri LIKE '%file-6'
    • SPL結果

    查詢結果中新增欄位 a 的值為 true,表明該條日誌的 request_uri 欄位值以 file-6 結尾。

SOME運算子

SOME運算子用於判斷x是否滿足任意一個條件。如果滿足,則返回true。

  • 文法

    x relational operator SOME(subquery)
  • 參數說明

    參數

    說明

    x

    參數值為任意可比較的資料類型。

    比較子

    <、>、<=、>=、=、<>、!=

    重要

    SOME運算子必須緊跟在比較子(<、>、<=、>=、=、<>、!=)後面。

    subquery

    SQL子查詢。

  • 傳回值類型

    boolean類型。

  • 樣本

    執行個體i-01相關的請求中,是否存在請求時間長度小於20s的請求。

    • 欄位範例

      instance_id:i-01
      request_time:16
    • 查詢和分析語句

      * | SELECT 20 > SOME(SELECT request_time WHERE instance_id='i-01')
    • 查詢和分析結果

GREATEST運算子

GREATEST運算子用於擷取xy中的最大值。

說明

GREATEST運算子用於橫向對比,max函數用於縱向對比。

  • 文法

    GREATEST(x, y...)
  • 參數說明

    參數

    說明

    x

    參數值為任意可比較的資料類型。

    y

    參數值為任意可比較的資料類型。

  • 傳回值類型

    double類型。

  • 樣本

    對同一行中的request_time欄位值和status欄位值進行對比,擷取其中的最大值。

    • 欄位範例

      request_time:38
      status:200
    • 查詢和分析語句

      * |  SELECT GREATEST(request_time,status)
    • 查詢和分析結果返回 _col0 列,值為 200.0,即 request_time(38)與 status(200)中的較大值。

LEAST運算子

LEAST運算子用於擷取xy中的最小值。

說明

LEAST運算子用於橫向對比,min函數用於縱向對比。

  • 文法

    LEAST(x, y...)
  • 參數說明

    參數

    說明

    x

    參數值為任意可比較的資料類型。

    y

    參數值為任意可比較的資料類型。

  • 傳回值類型

    double類型。

  • 樣本

    對同一行中的request_time欄位值和status欄位值進行對比,擷取其中的最小值。

    • 欄位範例

      request_time:77
      status:200
    • 查詢和分析語句

      * |  SELECT LEAST(request_time,status)
    • 查詢和分析結果

      返回結果為77。

NULL運算子

NULL運算子用於判斷x是否為null。

  • 文法

    • IS NULL表示參數值為null時,返回true。

      x IS NULL
    • IS NOT NULL表示參數值不為null時,返回true。

      x IS NOT NULL
  • 參數說明

    參數

    說明

    x

    參數值為任意可比較的資料類型。

  • 傳回值類型

    boolean類型。

  • 樣本

    • 樣本1:判斷status欄位值是否為null。

      • 查詢和分析語句

        * | select status IS NULL
      • 查詢和分析結果:查詢結果返回 _col0 列,兩行值均為 false,表示 status 欄位不為 NULL。

    • 樣本2:統計status欄位值不為空白的日誌條數。

      • 查詢和分析語句

        * | SELECT count(*) AS count FROM log WHERE status IS NOT NULL
      • 查詢和分析結果返回 count 值為 1340,表示日誌中 status 不為 NULL 的日誌條數。