Share via


SEARCH 函數 (DAX)

傳回第一次找到特定字元或文字字串的字元數,從左邊讀到右邊。搜尋會區分大小寫。

語法

SEARCH(<find_text>, <within_text>, [start_num])

參數

詞彙

定義

find_text

您想要尋找的文字。

within_text

您要在其中搜尋 find_text 的文字,或是包含文字的資料行。

start_num

(選擇性) 您要在 within_text 內開始搜尋的字元位置。如果省略,則為 1。

屬性值/傳回值

從第二個文字字串的第一個字元開始計算,第一個文字字串的開始位置號碼

備註

藉由使用這個函數,您可以在第二個文字字串內找到一個文字字串,並傳回第一個字串的開始位置。

您可以使用 SEARCH 函數來判斷另一個文字字串內的字元或文字字串位置,然後使用 MID 函數傳回該文字,或是使用 REPLACE 函數來變更該文字。

如果在 within_text 中找不到 find_text,公式便會傳回錯誤。此行為如同 Excel,如果找不到子字串,便會傳回 #VALUE。within_text 中的 Null 在此內容中將會解譯為空字串。

範例:在字串內搜尋

描述

下列公式會在單字 "printer" 中找到字母 "n" 的位置。

程式碼

=SEARCH("n","printer")

註解

這個函數會傳回 4,因為 "n" 是 "printer" 單字內的第四個字元。

範例:在資料行內搜尋

描述

您也可以使用資料行參考做為 SEARCH 的引數。下列公式會在資料行 [PostalCode] 中找到字元 "-" (連字號) 的位置。

程式碼

=SEARCH("-",[PostalCode])

註解

傳回結果是數字的資料行,表示連字號的索引位置。

範例:SEARCH 的錯誤處理

描述

如果在來源資料行的每個資料列中都找不到搜尋字串,上述範例中的公式將會失敗。因此,下一個範例會示範如何搭配 SEARCH 函數使用 IFERROR,以確認每個資料列都可傳回有效的結果。

下列公式會在資料行中尋找字元 "-" 的位置,如果找不到該字串,則會傳回 -1。

程式碼

= IFERROR(SEARCH("-",[PostalCode]),-1)

註解

請注意,您當做錯誤輸出使用之值的資料類型必須符合非錯誤輸出類型的資料類型。在此情況下,萬一發生錯誤,您要提供一個數值供輸出之用,因為 SEARCH 會傳回一個整數值。

不過,您也可以使用 BLANK() 當做 IFERROR 的第二個引數,以傳回空白 (空字串)。