SEARCH 函數

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

語法

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()。

傳回值

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

備註

  1. 此搜尋函數不會區分大小寫。 搜尋 "N" 會找到 'N' 或 'n' 的第一個出現項目。

  2. 此搜尋函數會區分腔調字。 搜尋 "á" 會找到 'á' 的第一個出現項目,但不會找到 'a'、'à' 項目,或大寫版本 'A'、'Á' 項目。

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

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

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

在以 DirectQuery 模式部署然後查詢的模型中使用時,此 DAX 函數可能會傳回不同的結果。 如需有關 DirectQuery 模式語意差異的詳細資訊,請參閱 https://go.microsoft.com/fwlink/?LinkId=219171

範例:在字串內搜尋

說明

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

程式碼

=SEARCH("n","printer")

註解

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

範例:在資料行內搜尋

說明

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

程式碼

=SEARCH("-",[PostalCode])

註解

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

範例:SEARCH 的錯誤處理

說明

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

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

程式碼

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

註解

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

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

請參閱

參考

MID 函數

REPLACE 函數

其他資源

文字函數 (DAX)