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”的第一个字母的位置。 如果未找到,则返回空白。
SEARCH 不区分大小写。 在此示例中,如果在 find_text
参数中使用了“cycle”或“Cycle”,则为任一情况返回结果。 对区分大小写使用 FIND。
本文中的示例可用于示例 Adventure Works DW 2020 Power BI Desktop 模型。 若要获取模型,请参阅 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 | 增值经销商 | |
Twin Cycles | 增值经销商 | 6 |
Rich Department Store | Warehouse | |
Rental Gallery | Specialty Bike Shop | |
Budget Toy Store | Warehouse | |
Global Sports Outlet | Warehouse | |
Online Bike Catalog | Warehouse | |
头盔和周期 | 增值经销商 | 13 |
Jumbo Bikes | Specialty Bike Shop |