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

FIND
REPLACE
文本函数