比較字串

不同於其他類型的資料,文字資料對儲存格中的值種類幾乎沒有限制。在應用程式中,這個資料通常會被推測為字串資料類型。因此,找到意義相同的字串值會很困難,只要內容或結構有些微差異,就會造成比對結果不符。

本節提供一些比較字串的方法。

  • 部分目標系統對匯入值的長度可能設有限制。若要進一步瞭解如何管理字串長度,請參閱管理字串長度

尋找子字串

您可以使用下列函式找出資料欄值中包含的子字串。

函式名稱說明
LEFT 函式

依照參數的指定,比對字串中最左邊的字元集。字串可以是資料欄參照或字串常值。

RIGHT 函式

依照參數的指定,比對字串中右邊的字元集。字串可以是資料欄參照或字串常值。

FIND 函式

傳回輸入字串中,指定相符字串所在位置的索引值。系統會從左至右進行搜尋。

RIGHTFIND 函式

依照參數的指定,比對字串中右邊的字元集。字串可以是資料欄參照或字串常值。

SUBSTRING 函式

依據使用者定義的字串起始及結束索引值,比對部分或完整字串。

下列轉換指令會檢查 ProdId 資料欄值小寫版本的左邊五個值,確認是否符合 xxxx-。如果偵測到這個值,ProdName 值就會設為 NO_NAME

轉換名稱 Edit with formula
參數:資料欄 ProdName
參數:公式 IF(LEFT(LOWER(ProdId,5))=='xxxx-','NO_NAME' ,ProdName)

比較尾端為模式的字串

您可以使用 STARTSWITHENDSWITH 函式判斷字串的開頭或尾端是否為指定模式。

提示:對字串執行模式檢查時,這些函式最為實用。針對字串常值,您可以使用 LEFTRIGHT 函式。請參閱下方說明。

如果 custCode 值的開頭為連續六位數字,下列轉換指令就會在 custCodeStatus 資料欄中插入 error 值。

轉換名稱 Edit with formula
參數:資料欄 custCodeStatus
參數:公式 IF(STARTSWITH(custCode,`{digit}{6}`), 'error',custCodeStatus)

請參閱 STARTSWITH 函式

請參閱 ENDSWITH 函式

比對字串

完全比對

您可以使用 EXACT 函式來比較兩個字串是否完全相符。字串輸入內容可以是字串常值、資料欄參照或求出值為字串的運算式。

附註:EXACT 函式是用於評估是否完全相符。如系統偵測到空格字元或大小寫差異,都會傳回 false

您可以在 EXACT 參照中以巢狀形式插入函式運算式,以便消除各個字串中不重要的共同差異。在下列轉換指令中,在移除空格字元和大小寫差異後,如果 colAcolB 完全相符,系統就會在 matches 資料欄中插入 true

轉換名稱 New formula
參數:公式 IF(EXACT(LOWER(REMOVEWHITESPACE(colA)))==EXACT(LOWER(REMOVEWHITESPACE(colB))),'true','false')
參數:新資料欄名稱 matches

Doublemetaphone 比對

這個平台也支援使用 doublemetaphone 演算法進行模糊比對。此演算法提供用於進行近似比對的機制;您可以在 DOUBLEMETAPHONEEQUALS 函式中視需要使用第二個參數來定義演算法的比對強度。

這個演算法會針對每個字串產生兩個獨立的編碼:主要編碼及次要編碼。您可以透過 DOUBLEMETAPHONE 函式嘗試使用這些編碼。詳情請參閱 DOUBLEMETAPHONE 函式

這個演算法可用於比較兩個字串,如以下轉換指令所示。

轉換名稱 New formula
參數:公式 DOUBLEMETAPHONEEQUALS(colA,colB,'strong')
參數:新資料欄名稱 matches
  • 這個函式的前兩個參數是字串常值、資料欄參照,或傳回欲比較字串的函式。
  • 第三個參數為選用參數,用於決定可傳回 true 的比對等級。可用的選項如下:

    比對門檻說明
    'strong'兩個字串的主要編碼須相符。
    'normal'至少一個字串的主要編碼必須符合另一字串的其中一個編碼。
    'weak'字串的主要或次要編碼與另一字串的主要或次要編碼相符。
  • 詳情請參閱 DOUBLEMETAPHONEEQUALS 函式

比較字串

您可以針對字串值使用字串比較函式,以查看如何使用拉丁字集對照設定來比較字串。

提示:任何資料欄都可以轉換成「字串」資料類型以使用這些函式。

定序是指將寫入的內容整理成標準化順序。字串比較函式會利用拉丁文字元的定序規則。規則摘要如下:

  • 進行比較時會區分大小寫。
    • 相同字母的大寫字體版本大於小寫字體版本。
    • 但在字母表中位置在後面的小寫字母大於位置在前的大寫字母。
  • 如果兩個字串完全相同,則為相等。
    • 如果兩個字串相同,但第二個字串的結尾含有一個額外的字元,則第二個字串較大。
  • 正規化版夲的字母是不帶有重音符號的小寫版本字母。在字串比較中,這是所有變異項中的最小值。
    • a 小於 ă。
    • 但與 b 相比較時,a = ă。
    • 拉丁文正規化字元集含有 26 個以上的字元。

下表說明拉丁文字元定序的部分通用規則。

順序說明較小範例較大範例
1空白字元(空格鍵)(Return 鍵)
2標點符號'@
3數字12
4字母aA
5 Ab

資源:

附註:在以下圖表中 (見下方連結),頁面頂端的值小於頁面下方列出的值。同樣的,左側導覽列中列出的圖表也是按遞增順序排列。

若要進一步瞭解適用的定序規則,請參閱 http://www.unicode.org/charts/collation/

可用的函式:

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Google Cloud Dataprep 說明文件
需要協助嗎?請前往我們的支援網頁