FIND
返回一个文本字符串在另一个文本字符串中的起始位置。 FIND 区分大小写。
语法
FIND(<find_text>, <within_text>[, [<start_num>][, <NotFoundValue>]])
parameters
术语 | 定义 |
---|---|
find_text | 要查找的文本。 使用双引号(空文本)匹配 within_text 中的第一个字符。 |
within_text | 包含要查找的文本的文本。 |
start_num | (可选)从此处开始搜索的字符;如果省略,则 start_num=1。 within_text 中的第一个字符是字符数字 1。 |
NotFoundValue | (可选但强烈建议)当运算没有找到匹配的子字符串时返回的值,通常为 0、-1 或 BLANK()。 如果未指定,则返回错误。 |
返回值
显示要查找的文本字符串的起始点的数字。
备注
Microsoft Excel 有多个版本的 FIND 函数,可以适应单字节字符集 (SBCS) 和双字节字符集 (DBCS) 语言,而 DAX 则使用 Unicode 并以相同的方式对每个字符进行计数;因此,你无需根据字符类型使用其他版本。
在已计算的列或行级安全性 (RLS) 规则中使用时,不支持在 DirectQuery 模式下使用此函数。
FIND 不支持通配符。 若要使用通配符,请使用 SEARCH。
示例
以下 DAX 查询在包含经销商名称的字符串中查找“Bike”的第一个字母的位置。 如果未找到,则返回 Blank。
请记住,使用 FIND 会区分大小写。 此示例中,如果在 <find_text> 参数中使用了“bike”,则不返回任何结果。 若不区分大小写,请使用 SEARCH。
可将本文中的示例与 Adventure Works DW 2020 示例模型结合使用。 若要获取模型,请参阅 DAX 示例模型。
EVALUATE
CALCULATETABLE (
ADDCOLUMNS (
TOPN ( 10, SUMMARIZE('Reseller', [Reseller], [Business Type])),
"Position of Bike", FIND ( "Bike", 'Reseller'[Reseller], 1, BLANK () )
),
'Reseller'[Business Type] IN { "Specialty Bike Shop", "Value Added Reseller", "Warehouse"}
)
返回:
Reseller | Business Type | Bike 所在的位置 |
---|---|---|
Volume Bike Sellers | Warehouse | 8 |
Mass Market Bikes | Value Added Reseller | 13 |
Twin Cycles | Value Added Reseller | |
Rich Department Store | Warehouse | |
Rental Gallery | Specialty Bike Shop | |
Budget Toy Store | Warehouse | |
Global Sports Outlet | Warehouse | |
Online Bike Catalog | Warehouse | 8 |
Helmets and Cycles | Value Added Reseller | |
Jumbo Bikes | Specialty Bike Shop | 7 |