SOUNDEX (Transact-SQL)
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics-eindpunt in Microsoft Fabric
Warehouse 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
, W
en 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 metSOUNDEX
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