Delen via


SOUNDEX (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricWarehouse in Microsoft Fabric

Retourneert een code van vier tekens (SOUNDEX) om de gelijkenis van twee tekenreeksen te evalueren.

Transact-SQL syntaxisconventies

Syntaxis

SOUNDEX ( character_expression )

Argumenten

character_expression

Een alfanumerieke expressie tekengegevens. character_expression kan een constante, variabele of kolom zijn.

Retourtypen

varchar-

Opmerkingen

SOUNDEX converteert een alfanumerieke tekenreeks naar een code van vier tekens die is gebaseerd op hoe de tekenreeks klinkt wanneer deze in het Engels wordt gesproken. Het eerste teken van de code is het eerste teken van character_expression, geconverteerd naar hoofdletters. De tweede tot en met de vierde tekens van de code zijn cijfers die de letters in de expressie vertegenwoordigen. De letters A, E, I, O, U, H, Wen Y worden genegeerd, tenzij ze de eerste letter van de tekenreeks zijn. Nullen worden zo nodig toegevoegd om een code van vier tekens te produceren. Zie The Soundex Indexing Systemvoor meer informatie over de SOUNDEX code.

SOUNDEX codes van verschillende tekenreeksen kunnen worden vergeleken om te zien hoe vergelijkbaar de tekenreeksen klinken wanneer ze worden gesproken. De functie DIFFERENCE() voert een SOUNDEX uit op twee tekenreeksen en retourneert een geheel getal dat aangeeft hoe vergelijkbaar de SOUNDEX codes zijn voor deze tekenreeksen.

SOUNDEX is sorteringsgevoelig. Tekenreeksfuncties kunnen worden genest.

SOUNDEX-compatibiliteit

In eerdere versies van SQL Server heeft de SOUNDEX functie een subset van de SOUNDEX-regels toegepast. Sql Server past onder databasecompatibiliteitsniveau 110 of hoger een volledigere set regels toe.

Nadat u een upgrade hebt uitgevoerd naar compatibiliteitsniveau 110 of hoger, moet u mogelijk de indexen, heaps of CHECK beperkingen die gebruikmaken van de functie SOUNDEX opnieuw opbouwen.

  • Een heap die een permanente berekende kolom bevat die is gedefinieerd met SOUNDEX kan pas worden opgevraagd wanneer de heap opnieuw wordt opgebouwd door de volgende instructie uit te voeren:

    ALTER TABLE <table> REBUILD;
    
  • CHECK beperkingen die zijn gedefinieerd met SOUNDEX zijn uitgeschakeld bij de upgrade. Voer de volgende instructie uit om de beperking in te schakelen:

    ALTER TABLE <table> WITH CHECK CHECK CONSTRAINT ALL;
    
  • Indexen (inclusief geïndexeerde weergaven) die een persistente berekende kolom bevatten die is gedefinieerd met SOUNDEX kunnen pas worden opgevraagd wanneer de index opnieuw wordt opgebouwd door de volgende instructie uit te voeren:

    ALTER INDEX ALL ON <object> REBUILD;
    

Voorbeelden

Een. SOUNDEX gebruiken

In het volgende voorbeeld ziet u de functie SOUNDEX en de gerelateerde DIFFERENCE functie. In het eerste voorbeeld worden de standaard-SOUNDEX waarden geretourneerd voor alle medeklinkers. Als u de SOUNDEX retourneert voor Smith en Smythe hetzelfde SOUNDEX resultaat, omdat alle klinkers, de letter y, dubbele letters en de letter h, niet zijn opgenomen.

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

Dit is de resultatenset. Geldig voor een Latin1_General sortering.

S530  S530

B. VERSCHIL gebruiken

De functie DIFFERENCE vergelijkt het verschil van de SOUNDEX patroonresultaten. In het volgende voorbeeld ziet u twee tekenreeksen die alleen verschillen in klinkers. Het geretourneerde verschil is 4, het laagst mogelijke verschil.

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

Dit is de resultatenset. Geldig voor een Latin1_General sortering.

4

In het volgende voorbeeld verschillen de tekenreeksen in medeklinkers; daarom is het geretourneerde verschil 2, hoe groter het verschil.

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

Dit is de resultatenset. Geldig voor een Latin1_General sortering.

2