Dela via


SOUNDEX (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-analysslutpunkt i Microsoft FabricWarehouse i Microsoft Fabric

Returnerar en kod med fyra tecken (SOUNDEX) för att utvärdera likheten mellan två strängar.

Transact-SQL syntaxkonventioner

Syntax

SOUNDEX ( character_expression )

Argument

character_expression

Ett alfanumeriskt uttryck teckendata. character_expression kan vara en konstant, variabel eller kolumn.

Returtyper

varchar

Anmärkningar

SOUNDEX konverterar en alfanumerisk sträng till en kod med fyra tecken som baseras på hur strängen låter när den talas på engelska. Det första tecknet i koden är det första tecknet i character_expression, konverterat till versaler. Kodens andra till fjärde tecken är siffror som representerar bokstäverna i uttrycket. Bokstäverna A, E, I, O, U, H, Woch Y ignoreras om de inte är den första bokstaven i strängen. Nolla läggs till i slutet om det behövs för att skapa en kod med fyra tecken. Mer information om SOUNDEX-koden finns i Soundex Indexing System.

SOUNDEX koder från olika strängar kan jämföras för att se hur lika strängarna låter när de talas. Funktionen DIFFERENCE() utför en SOUNDEX på två strängar och returnerar ett heltal som representerar hur lika SOUNDEX-koderna är för dessa strängar.

SOUNDEX är sorteringskänslig. Strängfunktioner kan kapslas.

SOUNDEX-kompatibilitet

I tidigare versioner av SQL Server tillämpade funktionen SOUNDEX en delmängd av SOUNDEX regler. Under databaskompatibilitetsnivå 110 eller senare tillämpar SQL Server en mer fullständig uppsättning regler.

När du har uppgraderat till kompatibilitetsnivå 110 eller senare kan du behöva återskapa de index, heaps eller CHECK begränsningar som använder funktionen SOUNDEX.

  • En heap som innehåller en bevarad beräknad kolumn som definierats med SOUNDEX kan inte frågas förrän heapen återskapas genom att köra följande instruktion:

    ALTER TABLE <table> REBUILD;
    
  • CHECK begränsningar som definierats med SOUNDEX inaktiveras vid uppgraderingen. Om du vill aktivera villkoret kör du följande instruktion:

    ALTER TABLE <table> WITH CHECK CHECK CONSTRAINT ALL;
    
  • Index (inklusive indexerade vyer) som innehåller en bevarad beräknad kolumn som definierats med SOUNDEX kan inte frågas förrän indexet återskapas genom att köra följande instruktion:

    ALTER INDEX ALL ON <object> REBUILD;
    

Exempel

A. Använda SOUNDEX

I följande exempel visas funktionen SOUNDEX och den relaterade funktionen DIFFERENCE. I det första exemplet returneras standardvärdena SOUNDEX för alla konsonanter. Om du returnerar SOUNDEX för Smith och Smythe returneras samma SOUNDEX resultat eftersom alla vokaler, bokstaven y, dubbla bokstäver och bokstaven hinte ingår.

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

Här är resultatuppsättningen. Giltigt för en Latin1_General sortering.

S530  S530

B. Använd DIFFERENCE

Funktionen DIFFERENCE jämför skillnaden i SOUNDEX mönsterresultat. I följande exempel visas två strängar som endast skiljer sig åt i vokaler. Skillnaden som returneras är 4, den lägsta möjliga skillnaden.

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

Här är resultatuppsättningen. Giltigt för en Latin1_General sortering.

4

I följande exempel skiljer sig strängarna åt i konsonanter. Skillnaden som returneras är därför 2, den större skillnaden.

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

Här är resultatuppsättningen. Giltigt för en Latin1_General sortering.

2