Functies voor codering en similariteit
SQL Server 2025 introduceert nieuwe functies voor tekenreekscodering en gelijkenismeting. Deze functies bieden ondersteuning voor veilige gegevenstransformatie, fuzzy matching en vergelijkingen in natuurlijke taal rechtstreeks binnen T-SQL.
Ze maken het gemakkelijker om duplicaten te detecteren, records te standaardiseren of bijna overeenkomsten te vinden zonder te vertrouwen op externe hulpprogramma's of door de gebruiker gedefinieerde functies.
Overzicht van codering- en vergelijkingsfuncties
BASE64_ENCODE
Converteert een tekenreeks of binaire waarde naar base64-indeling. Wordt vaak gebruikt voor het coderen van referenties, binaire gegevens of tekst die veilig moet worden opgeslagen of verzonden via JSON- of web-API's.
BASE64_DECODE
Hiermee wordt de codering omgekeerd en wordt de met Base64 gecodeerde tekst weer geconverteerd naar de oorspronkelijke vorm.
Deze twee functies helpen bij het beheren van veilige, draagbare gegevensuitwisseling tussen SQL Server en andere systemen.
STRING_SIMILARITY
Retourneert een overeenkomstscore (tussen 0,0 en 1,0) die twee tekenreeksen vergelijkt op basis van tekenreeksvolgorden.
Een hogere score betekent dat de twee tekenreeksen meer vergelijkbaar zijn.
EDIT_DISTANCE
Berekent het aantal bewerkingen met één teken (invoegingen, verwijderingen of vervangingen) dat nodig is om de ene tekenreeks in een andere tekenreeks te wijzigen.
EDIT_DISTANCE_SIMILARITY
Converteert de bewerkingsafstand naar een overeenkomstscore, waarbij 1,0 een exacte overeenkomst vertegenwoordigt en 0,0 geen overeenkomst betekent.
JARO_WINKLER_DISTANCE
Meet de afstand tussen twee tekenreeksen op basis van omzettingen en voorvoegselovereenkomsten. Wordt vaak gebruikt voor het vergelijken van namen of korte id's.
JARO_WINKLER_SIMILARITY
Retourneert een overeenkomstscore van 0,0 tot 1,0 met behulp van het Jaro-Winkler-algoritme, waarbij de gelijkenis aan het begin van de tekenreeksen wordt benadrukt.
Het is handig voor overeenkomende namen, bedrijfsrecords of gebruikersinvoer die mogelijk typefouten bevatten.
Voorbeeld 1: Gevoelige gegevens coderen en decoderen
Een systeembeheerder wil API-sleutels opslaan in gecodeerde vorm om onbedoelde blootstelling tijdens controles of exports te voorkomen. De sleutels kunnen worden gecodeerd met Base64 voordat ze naar een configuratietabel worden geschreven.
Query: Coderen en decoderen voorbeeld
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
| OorspronkelijkeWaarde | EncodedValue | DecodedValue |
|---|---|---|
| AppKey-2025-SECURE | QXBwS2V5LTIwMjUtU0VDVVJF | AppKey-2025-SECURE |
In dit voorbeeld ziet u hoe gegevens veilig kunnen worden gecodeerd voor opslag of overdracht en decoderen wanneer dat nodig is, allemaal binnen T-SQL.
Voorbeeld 2: Tekenreeksen vergelijken voor gelijkenis
Een data quality engineer moet bijna dubbele vermeldingen in een klanttabel detecteren die worden veroorzaakt door inconsistente gegevensinvoer.
Met de overeenkomstenfuncties van SQL Server 2025 kunt u records identificeren die slechts enigszins verschillen, zoals typefouten of extra spaties.
Voorbeeldgegevens
| KlantID | Klantnaam |
|---|---|
| 1 | Jonathon Smith |
| 2 | Jonathan Smith |
| 3 | J. Smit |
| 4 | John Smith |
Query: Namen vergelijken met overeenkomstenfuncties
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 | NaamB | SimilarityScore | EditSteps | JaroScore |
|---|---|---|---|---|
| Jonathon Smith | Jonathan Smith | 0.93 | 1 | 0,94 |
| Jonathan Smith | John Smith | 0.77 | 4 | 0.79 |
| Jonathon Smith | J. Smit | 0.68 | 6 | 0.70 |
| J. Smit | John Smith | 0,62 | 5 | 0.66 |
Deze uitvoer laat zien dat "Jonathon Smith" en "Jonathan Smith" bijna identiek zijn, terwijl "J. Smith" en "John Smith" delen gedeeltelijke gelijkenis.
Deze scores kunnen helpen bij het identificeren van waarschijnlijke duplicaten voordat u gegevens samenvoegt of opschoont.
Voorbeeld 3: Codering en gelijkenis combineren
In sommige systemen moeten gecodeerde id's indirect worden vergeleken. Door overeenkomsten te decoderen en vervolgens overeenkomsten toe te passen, kunt u nog steeds patronen of duplicaten detecteren voor gecodeerde gegevens.
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;
Resultaat
| EncodedA | GecodeerdeB | SimilarityScore |
|---|---|---|
| VXNlci03MTM= | VXNlci03MTNY | 0.93 |
In dit voorbeeld ziet u dat SQL Server, zelfs na het decoderen van Base64-waarden, overeenkomsten kan berekenen zonder extra verwerkingslagen.
Samenvatting
SQL Server 2025 breidt T-SQL uit met ingebouwde functies voor base64-codering en tekenreeks-overeenkomstenanalyse.
Ontwikkelaars kunnen nu tekenreeksen rechtstreeks in SQL-query's coderen, decoderen en vergelijken om de gegevenskwaliteit te verbeteren, bijna duplicaten te detecteren en beveiligde teksttransformaties af te handelen.
Deze hulpprogramma's vereenvoudigen taken die eerder externe scripts of CLR-integratie vereist, waardoor zowel de prestaties als de onderhoudbaarheid voor werkbelastingen met veel tekst worden verbeterd.