傳回第一次找到特定字元或文字字串的字元數,由左至右讀取。 搜尋不區分大小寫、不區分假字、不區分寬度和口音。
語法
SEARCH(<find_text>, <within_text>[, [<start_num>][, <NotFoundValue>]])
參數
| 詞彙 | 定義 |
|---|---|
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字串被解釋為空字串。-
在匯出數據行或數據列層級安全性 (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 | 商務類型 | 自行車的位置 |
|---|---|---|
| 大量自行車銷售人員 | 倉庫 | |
| 大眾市場自行車 | 增值轉銷商 | |
| 協力車 | 增值轉銷商 | 6 |
| Rich 百貨公司 | 倉庫 | |
| 租賃庫 | 專業自行車店 | |
| 平價玩具店 | 倉庫 | |
| 全球體育購物中心 | 倉庫 | |
| 線上自行車目錄 | 倉庫 | |
| 頭盔和迴圈 | 增值轉銷商 | 13 |
| 巨無霸自行車 | 專業自行車店 |