邏輯運算符
本文介紹邏輯運算符的基本語法及示例。
日志服務(wù)支持如下邏輯運算符。
在日志服務(wù)分析語句中,表示字符串的字符必須使用單引號('')包裹,無符號包裹或被雙引號("")包裹的字符表示字段名或列名。例如:'status'表示字符串status,status或"status"表示日志字段status。
邏輯運算符優(yōu)先級從高到低為not、and、or。您可以使用圓括號改變默認的計算順序。
邏輯運算只支持輸入值為true、false或null的布爾表達式。
運算符 | 語法 | 說明 | 支持SQL | 支持SPL |
x AND y | x和y的值都為true時,返回結(jié)果為true。 | √ | √ | |
x OR y | x和y中任意一個的值為true時,返回結(jié)果為true。 | √ | √ | |
NOT x | x的值為false時,返回結(jié)果為true。 | √ | √ |
AND運算符
x和y的值都為true時,返回結(jié)果為true。
語法
x AND y
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為布爾表達式。 |
y | 參數(shù)值為布爾表達式。 |
返回值類型
boolean類型。
示例
SQL
如果status字段值為200且request_method字段值為GET,則返回true。否則返回false。
查詢和分析語句
*|SELECT status=200 AND request_method='GET'
查詢和分析結(jié)果
SPL
如果status字段值為200且request_method字段值為GET,則返回true。否則返回false。
SPL語句
*|extend a = status=200 AND request_method='GET'
SPL結(jié)果
OR運算符
x和y中任意一個的值為true時,返回結(jié)果為true。
語法
x OR y
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為布爾表達式。 |
y | 參數(shù)值為布爾表達式。 |
返回值類型
boolean類型。
示例
SQL
查找request_uri字段值是以file-8或file-6的結(jié)尾的日志。
查詢和分析語句
*|SELECT * WHERE request_uri LIKE '%file-8' OR request_uri LIKE '%file-6'
查詢和分析結(jié)果
SPL
查找request_uri字段值是以file-8或file-6的結(jié)尾的日志。
SPL語句
*|WHERE request_uri LIKE '%file-8' OR request_uri LIKE '%file-6'
SPL結(jié)果
NOT運算符
x的值為false時,返回結(jié)果為true。
語法
NOT x
參數(shù)說明
參數(shù) | 說明 |
x | 參數(shù)值為布爾表達式。 |
返回值類型
boolean類型。
示例
SQL
統(tǒng)計請求狀態(tài)碼不為200時的請求時長。
查詢和分析語句
*|SELECT request_time WHERE NOT status=200
查詢和分析結(jié)果
SPL
查詢請求狀態(tài)碼不為200時的日志信息。
SPL語句
*|WHERE NOT status=200
SPL結(jié)果
附錄:真值表
x和y的值為true、false或null時,真值表如下所示。
x | y | x AND y | x OR y | NOT x |
true | true | true | true | false |
true | false | false | true | false |
true | null | null | true | false |
false | true | false | true | true |
false | false | false | false | true |
false | null | false | null | true |
null | true | null | true | null |
null | false | false | null | null |
null | null | null | null | null |