Kodnings- och likhetsfunktioner

Slutförd

SQL Server 2025 introducerar nya funktioner för strängkodning och likhetsmätning. Dessa funktioner stöder säker datatransformering, fuzzy-matchning och jämförelser med naturligt språk direkt i T-SQL.
De gör det enklare att identifiera dubbletter, standardisera poster eller hitta nära matchningar utan att förlita sig på externa verktyg eller användardefinierade funktioner.

Översikt över kodnings- och likhetsfunktioner

BASE64_ENCODE

Konverterar en sträng eller ett binärt värde till Base64-format. Används ofta för att koda autentiseringsuppgifter, binära data eller text som måste lagras eller överföras på ett säkert sätt via JSON eller webb-API:er.

BASE64_DECODE

Återställer kodningen och konverterar den Base64-kodade texten tillbaka till dess ursprungliga form.

Tillsammans hjälper dessa två funktioner till att hantera säkert, portabelt datautbyte mellan SQL Server och andra system.


STRING_SIMILARITY

Returnerar en likhetspoäng (mellan 0,0 och 1,0) som jämför två strängar baserat på teckensekvenser.
En högre poäng innebär att de två strängarna är mer lika.

EDIT_DISTANCE

Beräknar antalet redigeringar med ett tecken (infogningar, borttagningar eller ersättningar) som krävs för att ändra en sträng till en annan.

EDIT_DISTANCE_SIMILARITY

Konverterar redigeringsavstånd till en likhetspoäng, där 1,0 representerar en exakt matchning och 0,0 innebär ingen likhet.

JARO_WINKLER_DISTANCE

Mäter avståndet mellan två strängar baserat på införlivanden och prefixmatchningar. Används ofta för att jämföra namn eller korta identifierare.

JARO_WINKLER_SIMILARITY

Returnerar en likhetspoäng från 0,0 till 1,0 med hjälp av Jaro-Winkler-algoritmen och betonar likheten i början av strängarna.
Det är användbart för matchande namn, företagsposter eller användarindata som kan innehålla skrivfel.


Exempel 1: Koda och avkoda känsliga data

En systemadministratör vill lagra API-nycklar i kodat format för att förhindra oavsiktlig exponering under granskningar eller exporter. Nycklarna kan vara Base64-kodade innan de skrivs till en konfigurationstabell.

Fråga: Koda och avkoda exempel

DECLARE @ApiKey NVARCHAR(100) = 'AppKey-2025-SECURE';
DECLARE @Encoded NVARCHAR(MAX);
DECLARE @Decoded NVARCHAR(MAX);

-- Encode the API key
SET @Encoded = BASE64_ENCODE(@ApiKey);

-- Decode it back
SET @Decoded = BASE64_DECODE(@Encoded);

SELECT @ApiKey AS OriginalValue, @Encoded AS EncodedValue, @Decoded AS DecodedValue;

Results

Ursprungsvärde KodatVärde DecodedValue
AppKey-2025-SECURE QXBwS2V5LTIwMjUtU0VDVVJF AppKey-2025-SECURE

Det här exemplet visar hur data på ett säkert sätt kan kodas för lagring eller överföring och avkodas vid behov, allt inom T-SQL.


Exempel 2: Jämför strängar för likhet

En datakvalitetstekniker måste identifiera nästan duplicerade poster i en kundtabell som orsakas av inkonsekvent datainmatning.
Med sql Server 2025-likhetsfunktioner kan du identifiera poster som bara skiljer sig något åt, till exempel stavfel eller extra blanksteg.

Exempeldata

KundID Kundens namn
1 Jonathon Smith
2 Jonathan Smith
3 J. Smith
4 John Smith

Fråga: Jämför namn med likhetsfunktioner

SELECT 
    A.CustomerName AS NameA,
    B.CustomerName AS NameB,
    STRING_SIMILARITY(A.CustomerName, B.CustomerName) AS SimilarityScore,
    EDIT_DISTANCE(A.CustomerName, B.CustomerName) AS EditSteps,
    JARO_WINKLER_SIMILARITY(A.CustomerName, B.CustomerName) AS JaroScore
FROM dbo.Customers A
JOIN dbo.Customers B
    ON A.CustomerID < B.CustomerID
ORDER BY SimilarityScore DESC;

Results

NameA NamnB SimilarityScore EditSteps JaroScore
Jonathon Smith Jonathan Smith 0.93 1 0.94
Jonathan Smith John Smith 0.77 4 0.79
Jonathon Smith J. Smith 0.68 6 0.70
J. Smith John Smith 0,62 5 0.66

Detta visar att "Jonathon Smith" och "Jonathan Smith" är nästan identiska, medan "J. Smith" och "John Smith" delar partiell likhet.
Dessa poäng kan hjälpa dig att identifiera troliga dubbletter innan du sammanfogar eller rensar data.


Exempel 3: Kombinera kodning och likhet

I vissa system måste kodade identifierare jämföras indirekt. Genom att avkoda och sedan tillämpa likhet kan du fortfarande identifiera mönster eller dubbletter över kodade data.

DECLARE @Encoded1 NVARCHAR(MAX) = BASE64_ENCODE('User-713');
DECLARE @Encoded2 NVARCHAR(MAX) = BASE64_ENCODE('User-713X');

SELECT 
    @Encoded1 AS EncodedA,
    @Encoded2 AS EncodedB,
    STRING_SIMILARITY(
        BASE64_DECODE(@Encoded1),
        BASE64_DECODE(@Encoded2)
    ) AS SimilarityScore;

Result

KodadA KodadB SimilarityScore
VXNlci03MTM= VXNlci03MTNY 0.93

Det här exemplet visar att SQL Server även efter avkodning av Base64-värden kan beräkna likhetspoäng utan extra bearbetningslager.


Sammanfattning

SQL Server 2025 utökar T-SQL med inbyggda funktioner för Base64-kodning och stränglikhetsanalys.
Utvecklare kan nu koda, avkoda och jämföra strängar direkt i SQL-frågor för att förbättra datakvaliteten, identifiera nära dubbletter och hantera säkra texttransformeringar.
De här verktygen förenklar uppgifter som tidigare krävde externa skript eller CLR-integrering, vilket förbättrar både prestanda och underhåll för textintensiva arbetsbelastningar.