Aracılığıyla paylaş


SOUNDEX (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)Microsoft FabricWarehouse'da SQL analiz uç noktası

İki dizenin benzerliğini değerlendirmek için dört karakterli (SOUNDEX) bir kod döndürür.

Transact-SQL söz dizimi kuralları

Sözdizimi

SOUNDEX ( character_expression )

Bağımsız değişken

character_expression

Karakter verilerinin alfasayısal ifadesi. character_expression sabit, değişken veya sütun olabilir.

Dönüş türleri

varchar

Açıklamalar

SOUNDEX, alfasayısal dizeyi, İngilizce konuşulan dizenin nasıl göründüğüne bağlı olarak dört karakterli bir koda dönüştürür. Kodun ilk karakteri, büyük harfe dönüştürülen character_expressionilk karakteridir. Kodun ikinci ile dördüncü karakterleri, ifadedeki harfleri temsil eden sayılardır. , E, I, O, U, H, Wve YAharfler, dizenin ilk harfi olmadığı sürece yoksayılır. Dört karakterli bir kod oluşturmak için gerekirse sonuna sıfırlar eklenir. SOUNDEX kodu hakkında daha fazla bilgi için bkz. Soundex Dizin Oluşturma Sistemi.

Farklı dizelerdeki SOUNDEX kodları, konuşulan dizelerin ne kadar benzer olduğunu görmek için karşılaştırılabilir. DIFFERENCE() işlevi iki dizede bir SOUNDEX gerçekleştirir ve bu dizeler için SOUNDEX kodlarının ne kadar benzer olduğunu gösteren bir tamsayı döndürür.

SOUNDEX harmanlama duyarlıdır. Dize işlevleri iç içe yerleştirilmiş olabilir.

SOUNDEX uyumluluğu

SQL Server'ın önceki sürümlerinde, SOUNDEX işlevi SOUNDEX kurallarının bir alt kümesini uyguladı. Veritabanı uyumluluk düzeyi 110 veya üzeri altında, SQL Server kuralların daha eksiksiz bir kümesini uygular.

Uyumluluk düzeyi 110 veya üzerine yükselttikten sonra, SOUNDEX işlevini kullanan dizinleri, yığınları veya CHECK kısıtlamaları yeniden oluşturmanız gerekebilir.

  • SOUNDEX ile tanımlanan kalıcı bir hesaplanan sütun içeren yığın, aşağıdaki deyim çalıştırılarak yığın yeniden oluşturulana kadar sorgulanamaz:

    ALTER TABLE <table> REBUILD;
    
  • SOUNDEX ile tanımlanan CHECK kısıtlamaları yükseltmeden sonra devre dışı bırakılır. Kısıtlamayı etkinleştirmek için aşağıdaki deyimi çalıştırın:

    ALTER TABLE <table> WITH CHECK CHECK CONSTRAINT ALL;
    
  • SOUNDEX ile tanımlanan kalıcı bir hesaplanan sütun içeren dizinler (dizinlenmiş görünümler dahil) aşağıdaki deyim çalıştırılarak dizin yeniden oluşturulana kadar sorgulanamaz:

    ALTER INDEX ALL ON <object> REBUILD;
    

Örnekler

A. SOUNDEX kullanma

Aşağıdaki örnekte SOUNDEX işlevi ve ilgili DIFFERENCE işlevi gösterilmektedir. İlk örnekte, standart SOUNDEX değerleri tüm consonants için döndürülür. Smith ve Smythe için SOUNDEX döndürüldüğünde, tüm ünlüler, yharfi, çift harfler ve hharfi dahil edilmediğinden aynı SOUNDEX sonucu döndürür.

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

Sonuç kümesi aşağıdadır. Latin1_General harmanlama için geçerlidir.

S530  S530

B. FARK kullan

DIFFERENCE işlevi, SOUNDEX desen sonuçlarının farkını karşılaştırır. Aşağıdaki örnekte yalnızca sesli harflerden farklı olan iki dize gösterilmektedir. Döndürülen fark 4, mümkün olan en düşük farktır.

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

Sonuç kümesi aşağıdadır. Latin1_General harmanlama için geçerlidir.

4

Aşağıdaki örnekte, dizeler consonants bakımından farklılık gösterir; bu nedenle, döndürülen fark 2, daha büyük farktır.

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

Sonuç kümesi aşağıdadır. Latin1_General harmanlama için geçerlidir.

2