in~ 运算符

适用于:✅Azure 数据资源管理器Azure MonitorMicrosoft Sentinel

筛选记录集中具有不区分大小写的字符串的数据。

下表对 in 运算符进行了比较:

操作员 描述 区分大小写 示例(生成 true
in 等于某个元素 "abc" in ("123", "345", "abc")
!in 不等于任何元素 "bca" !in ("123", "345", "abc")
in~ 等于任何元素 "Abc" in~ ("123", "345", "abc")
!in~ 不等于任何元素 "bCa" !in~ ("123", "345", "ABC")

注意

嵌套数组将平展为单个值列表。 例如,x in (dynamic([1,[2,3]])) 重命名为 x in (1,2,3)

有关其他运算符的详细信息以及确定哪个运算符最适合你的查询,请参阅 datatype 字符串运算符

目前仅 ASCII 文本支持不区分大小写的运算符。 对于非 ASCII 比较,请使用 tolower() 函数。

性能提示

注意

性能取决于搜索的类型和数据的结构。 有关最佳做法,请参阅查询最佳做法

如果可能,请使用区分大小写的 in

语法

T | where col in~ (expression, ... )

详细了解语法约定

参数

客户 类型​​ 必需 说明
T string ✔️ 要筛选的表格输入。
col string ✔️ 进行筛选所依据的列。
expression 标量或表格 ✔️ 一个表达式,用于指定要搜索的值。 每个表达式都可以是一个标量值或一个生成一组值的表格表达式。 如果表格表达式包含多个列,则会使用第一个列。 搜索将考虑最多 1,000,000 个非重复值。

返回

其谓词为 true 的 T 中的行。

示例

标量列表

以下查询演示如何将 in~ 与逗号分隔的标量值列表一起使用。

StormEvents 
| where State in~ ("FLORIDA", "georgia", "NEW YORK") 
| count

输出

计数
4775

动态数组

以下查询演示如何将 in~ 与动态数组一起使用。

StormEvents 
| where State in~ (dynamic(["FLORIDA", "georgia", "NEW YORK"])) 
| count

输出

计数
4775

也可以使用 let 语句编写相同的查询。

let states = dynamic(["FLORIDA", "georgia", "NEW YORK"]);
StormEvents 
| where State has_any (states)
| summarize count() by State

输出

计数
4775

表格表达式

以下查询演示如何将 in~ 与内联表格表达式一起使用。 请注意,内联表格表达式必须用双括号括起来。

StormEvents 
| where State in~ (PopulationData | where Population > 5000000 | project State)
| summarize count() by State

输出

状态 count_
德克萨斯 4701
ILLINOIS 2022
MISSOURI 2016
佐治亚州 1983
明尼苏达州 1881
... ...

也可以使用 let 语句编写相同的查询。 请注意,在这种情况下,上例中提供的双括号不是必需的。

let large_states = PopulationData | where Population > 5000000 | project State;
StormEvents 
| where State in~ (large_states)
| summarize count() by State

输出

状态 count_
德克萨斯 4701
ILLINOIS 2022
MISSOURI 2016
佐治亚州 1983
明尼苏达州 1881
... ...