SOUNDEX (Transact-SQL)
適用於:SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric 的 SQL 端點分析
Microsoft Fabric 的倉儲
傳回四個字元 (SOUNDEX
) 程式代碼,以評估兩個字串的相似度。
語法
SOUNDEX ( character_expression )
引數
character_expression
字元數據的英數位元 表示式。 character_expression 可以是常數、變數或資料行。
傳回型別
varchar
備註
SOUNDEX
會將英數位元字串轉換成四個字元的程式代碼,此代碼是根據字串在英文中說話時聽起來的方式。 代碼的第一個字元是 character_expression 的第一個字元,轉換成大寫。 代碼的第二到第四個字元是數字,代表運算式中的字母。 除非是字串的第一個字母,否則會忽略字母 A
、E
、I
、O
、U
、H
、W
和 Y
。 如果需要產生四個字元的代碼,則在尾端加入零。 如需 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
值。 傳回 Smith
和 Smythe
的 SOUNDEX
會傳回相同的 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