SOUNDEX (Transact-SQL)
傳回四個字元的 (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 2012 套用一組更完整的規則。
升級到相容性層級 110 之後,您可能需要重建使用 SOUNDEX 函數的索引、堆積或 CHECK 條件約束。
在執行 ALTER TABLE <table> REBUILD 陳述式重建堆積之前,無法查詢包含使用 SOUNDEX 定義之保存的計算資料行的堆積。
在升級後,會停用使用 SOUNDEX 定義的 CHECK 條件約束。 若要啟用條件約束,請執行 ALTER TABLE <table> WITH CHECK CHECK CONSTRAINT ALL 陳述式。
如果索引 (包括索引檢視表) 包含使用 SOUNDEX 定義之保存的計算資料行,在執行 ALTER INDEX ALL ON <object> REBUILD 陳述式重建索引之前,將無法查詢這類索引。
範例
下列範例會顯示 SOUNDEX 函數和相關的 DIFFERENCE 函數。 在第一個範例中,傳回所有子音的標準 SOUNDEX 值。 傳回 Smith 和 Smythe 的 SOUNDEX,會傳回相同的 SOUNDEX 結果,因為所有母音、y 字母、雙重字母和 h 字母都不包括在內。
-- Using SOUNDEX
SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe');
以下為結果集:適用於 Latin1_General 定序。
----- -----
S530 S530
(1 row(s) affected)
DIFFERENCE 函數會比較 SOUNDEX 模式結果的差異。 下列範例會顯示母音不同的兩個字串。 傳回的差異是 4,這是最低的可能差異。
-- Using DIFFERENCE
SELECT DIFFERENCE('Smithers', 'Smythers');
GO
以下為結果集:適用於 Latin1_General 定序。
-----------
4
(1 row(s) affected)
在下列範例中,字串的子音不同;因此,傳回的差異是 2,差異比較大。
SELECT DIFFERENCE('Anothers', 'Brothers');
GO
以下為結果集:適用於 Latin1_General 定序。
-----------
2
(1 row(s) affected)