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 函数更改文本。

  • find_text within_text如果找不到该公式,公式将返回错误。 此行为类似于Excel,如果未找到子字符串,则返回 #VALUE。 within_text null 值在此上下文中解释为空字符串。

  • 在计算列或行级别安全性 (RLS) 规则中使用时,不支持在 DirectQuery 模式下使用此函数。

示例

以下 DAX 查询查找包含经销商名称的字符串中“cycle”的第一个字母的位置。 如果未找到, SEARCH 则返回空白。

SEARCH 不区分大小写。 在此示例中,如果在参数中使用“cycle”或“Cycle” find_text ,查询将返回任一情况的结果。 对区分大小写使用 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 业务类型 cycle 所在的位置
批量自行车卖家 Warehouse
大众市场自行车 增值经销商
孪生周期 增值经销商 6
富百货公司 Warehouse
租赁库 专业自行车店
预算玩具商店 Warehouse
全球体育网点 Warehouse
联机自行车目录 Warehouse
头盔和周期 增值经销商 13
巨无霸自行车 专业自行车店