SEARCH
返回按从左向右的读取顺序首次找到特定字符或文本字符串的字符编号。 搜索不区分大小写,会区分音调。
语法
SEARCH(<find_text>, <within_text>[, [<start_num>][, <NotFoundValue>]])
parameters
术语 | 定义 |
---|---|
find_text | 要查找的文本。 可以在 find_text 中使用通配符(问号 (?) 和星号 (*))。 问号匹配任何单个字符;星号匹配任何字符序列。 如果要查找实际的问号或星号,则在字符前键入一个波形符 (~)。 |
within_text | 要在其中搜索 find_text 的文本,或包含文本的列 。 |
start_num | (可选)within_text 中的字符位置,要从该位置开始搜索 。 如果省略,则为 1。 |
NotFoundValue | (可选但强烈建议)当运算没有找到匹配的子字符串时返回的值,通常为 0、-1 或 BLANK()。 如果未指定,则返回错误。 |
返回值
从第二个文本字符串的第一个字符算起,第一个文本字符串的开始位置编号。
备注
此搜索函数不区分大小写。 搜索“N”,将查找第一次出现“N”或“n”的位置。
此搜索函数区分音调。 搜索“á”会查找第一次出现“á”的位置,但不会查找第一次出现“a”、“à”或大写“A”和“Á”的位置。
可以使用 SEARCH 函数确定字符或文本字符串在另一个文本字符串中的位置,然后使用 MID 函数返回文本,或使用 REPLACE 函数更改文本。
如果在 within_text 中找不到 find_text,该公式将返回错误 。 此行为与 Excel 类似,后者在找不到子字符串时返回 #VALUE。 within_text 中的 NULL 将在此上下文中解释为空字符串 。
在已计算的列或行级安全性 (RLS) 规则中使用时,不支持在 DirectQuery 模式下使用此函数。
示例
以下 DAX 查询在包含经销商名称的字符串中查找“cycle”的第一个字母的位置。 如果未找到,则返回 Blank。
使用 SEARCH 不区分大小写。 此示例中,在 <find_text> 参数中使用“cycle”或“Cycle”都会返回结果。 若要区分大小写,请使用 FIND。
可将本文中的示例与 Adventure Works DW 2020 示例模型结合使用。 若要获取模型,请参阅 DAX 示例模型。
EVALUATE
CALCULATETABLE (
ADDCOLUMNS (
TOPN ( 10, SUMMARIZE('Reseller', [Reseller], [Business Type])),
"Position of cycle", SEARCH ( "cycle", 'Reseller'[Reseller], 1, BLANK () )
),
'Reseller'[Business Type] IN { "Specialty Bike Shop", "Value Added Reseller", "Warehouse"}
)
返回:
Reseller | Business Type | cycle 所在的位置 |
---|---|---|
Volume Bike Sellers | Warehouse | |
Mass Market Bikes | Value Added Reseller | |
Twin Cycles | Value Added Reseller | 6 |
Rich Department Store | Warehouse | |
Rental Gallery | Specialty Bike Shop | |
Budget Toy Store | Warehouse | |
Global Sports Outlet | Warehouse | |
Online Bike Catalog | Warehouse | |
Helmets and Cycles | Value Added Reseller | 13 |
Jumbo Bikes | Specialty Bike Shop |