soundex (Transact-sql)

İki benzerliği değerlendirmek için dört karakterlik (soundex) kodu döndürür.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

SOUNDEX ( character_expression )

Bağımsız değişkenler

  • character_expression
    Alfasayısal bir ise ifade karakter veri. character_expressionbir sabit, değişken veya sütun olabilir.

Dönüş Türleri

varchar

Açıklamalar

soundex, benzer sondaj sözcükler veya adlarını bulmak için bir dört karakterli kod için alfasayısal bir dize dönüştürür. İlk karakter kodunun ilk karakterini olduğunu character_expressionve -dördüncü karakter kodunun ikinci ifadesinde harfleri gösteren sayılardır. Ünlüler de character_expressiondize ilk harfini oldukları alınmaz. Sıfır sonunda dört karakterli kod üretmek gerekirse eklenir.

Aşağıdaki tablolarda, çeşitli harfleri gösteren sayıları tanımlar.

Sayı

Harflerin temsil eder

1

B, F, P, V

2

C, G, J, K, Q, S, X, Z

3

D, T

4

L

5

M, N

6

R

Göz ardı

A, e, ı, o, u, h, G ve y.

Örneğin, 'Washington' ifadesi soundex kodunu W252 olduğunu. W, s, n, g. 2 için 5 2 Geri kalan harfleri göz ardı. soundex kodunu hakkında daha fazla bilgi için bkz: Soundex indeksleme sistemi.

Dize işlevleri iç içe olabilir.

Uyumluluk Desteği

Uyumluluk düzeyi'nin altında 110, soundex aşağıdaki kurallar geçerlidir. Uyumluluk düzeyleri altında 90 ile 100, yalnızca 1 ve 3 kuralları izler.

  1. Eğer character_expressionherhangi bir çift mektuplar vardır bir harf kabul edilir. Örneğin, adı Gutierrez, yalnızca ilk r kabul edilir. İkinci r sayılır.

  2. Eğer character_expressionfarklı harf-soundex kodlama Kılavuzu'nda, aynı olan yan sahip bir harf kabul edilir. Örneğin, Jackson kodlu J250 adı (j, c, k gözardı, ihmal, s n, eklenen 0 için 5 için 2).

  3. Eğer bir sesli (a, e, ı, o, u) aynı soundex kodu, ünsüz hecenin sağındaki iki ünsüz kodlu ayırır.

  4. S veya w aynı soundex kodu iki ünsüz ayırırsanız, ünsüz hecenin sağındaki kodlu değil. Örneğin Ashcraft kodlu A261 adı (s, ihmal, c 6 r, f 1 2).

Uyumluluk düzeyi 110 yükselttikten sonra dizinler, yığınlar, yeniden veya check kısıtlamaları soundex işlevini kullanan gerekebilir.

  • Bir kalıcı içeren bir yığın soundex ile tanımlanan sütun can't sorgulanan kadar yığın deyimi çalıştırarak yeniden hesaplanan ALTER TABLE <table> REBUILD.

  • soundex ile tanımlanan check kısıtlamaları, yükseltme sırasında devre dışı bırakılır. Kısıtlamayı etkinleştirmek için deyimi çalıştırın ALTER TABLE <table> WITH CHECK CHECK CONSTRAINT ALL.

  • Bir kalıcı içeren (dizin oluşturulmuş görünümler dahil) dizinler hesaplanan soundex ile tanımlanan sütun can't sorgulanan INDEX deyimi çalıştırarak yeniden kadar ALTER INDEX ALL ON <object> REBUILD.

Örnekler

Aşağıdaki örnek, soundex ve ilgili fark işlevleri gösterir. İlk örnekte, standart SOUNDEXtüm ünsüz için döndürülen değerler. Dönen SOUNDEXiçin Smithve Smytheaynı soundex sonucu döndürür, çünkü tüm ünlüler, mektup y, harfler ve mektup iki katına h, dahil değildir.

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

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

Sonuç kümesi buradadır.

----- ----- 
S530  S530  

(1 row(s) affected)

----- ----- 
S530  S530  

(1 row(s) affected)

DIFFERENCEİşlevi karşılaştırır ve farkı SOUNDEXModel sonuçları. Aşağıdaki örnek, yalnızca ünlüler farklı iki dizesini gösterir. Fark iade 4, en düşük olası farkı.

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

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

Sonuç kümesi buradadır.

----------- 
4           

(1 row(s) affected)

----------- 
4           

(1 row(s) affected)

Aşağıdaki örnekte, ünsüz dizeleri farklı; Bu nedenle, döndürülen fark olduğunu 2, büyük farkı.

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

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

Sonuç kümesi buradadır.

----------- 
2           

(1 row(s) affected)

----------- 
2           

(1 row(s) affected)

Ayrıca bkz.

Başvuru

Dize işlevler (Transact-sql)