共用方式為


SOUNDEX (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 的 SQL 端點分析Microsoft Fabric 的倉儲

傳回四個字元 (SOUNDEX) 程式代碼,以評估兩個字串的相似度。

Transact-SQL 語法慣例

語法

SOUNDEX ( character_expression )

引數

character_expression

字元數據的英數位元 表示式character_expression 可以是常數、變數或資料行。

傳回型別

varchar

備註

SOUNDEX 會將英數位元字串轉換成四個字元的程式代碼,此代碼是根據字串在英文中說話時聽起來的方式。 代碼的第一個字元是 character_expression 的第一個字元,轉換成大寫。 代碼的第二到第四個字元是數字,代表運算式中的字母。 除非是字串的第一個字母,否則會忽略字母 AEIOUHWY。 如果需要產生四個字元的代碼,則在尾端加入零。 如需 SOUNDEX 程式代碼的詳細資訊,請參閱 Soundex 索引系統

SOUNDEX 來自不同字串的程式代碼可以比較,看看說話時字串聽起來有多相似。 DIFFERENCE() 函式會在兩個字元串上執行 SOUNDEX,並傳回整數,代表這些字串的 SOUNDEX 代碼相似程度。

SOUNDEX 會區分定序。 字串函數可以是巢狀函數。

SOUNDEX 相容性

在舊版 SQL Server 中,SOUNDEX 函式會套用 SOUNDEX 規則的子集。 在資料庫相容性層級 110 或更高層級下,SQL Server 套用一組更完整的規則。

升級至相容性層級 110 或更高版本之後,您可能需要重建使用 SOUNDEX 函式的索引、堆積或 CHECK 條件約束。

  • 包含以 SOUNDEX 定義之持續性計算數據行的堆積,除非執行下列語句來重建堆積,否則無法查詢:

    ALTER TABLE <table> REBUILD;
    
  • 升級時,會停用 SOUNDEX 定義的 CHECK 條件約束。 若要啟用條件約束,請執行下列語句:

    ALTER TABLE <table> WITH CHECK CHECK CONSTRAINT ALL;
    
  • 索引(包括索引檢視表)包含以 SOUNDEX 定義的持續性計算數據行,除非執行下列語句來重建索引,否則無法查詢:

    ALTER INDEX ALL ON <object> REBUILD;
    

範例

一個。 使用 SOUNDEX

下列範例顯示 SOUNDEX 函式和相關的 DIFFERENCE 函式。 在第一個範例中,傳回所有子音的標準 SOUNDEX 值。 傳回 SmithSmytheSOUNDEX 會傳回相同的 SOUNDEX 結果,因為不包含所有元音、字母 y、雙引號和字母 h

SELECT SOUNDEX('Smith'),
       SOUNDEX('Smythe');

結果集如下所示。 適用於 Latin1_General 定序。

S530  S530

B. 使用 DIFFERENCE

DIFFERENCE 函數會比較 SOUNDEX 模式結果的差異。 下列範例會顯示母音不同的兩個字串。 傳回的差異是 4,這是最低的可能差異。

SELECT DIFFERENCE('Smithers', 'Smythers');
GO

結果集如下所示。 適用於 Latin1_General 定序。

4

在下列範例中,字串的子音不同;因此,傳回的差異是 2,差異比較大。

SELECT DIFFERENCE('Anothers', 'Brothers');
GO

結果集如下所示。 適用於 Latin1_General 定序。

2