Funcții de codificare și similitudine

Finalizat

SQL Server 2025 introduce noi funcții pentru codificarea șirurilor și măsurarea similitudinii. Aceste caracteristici acceptă transformarea securizată a datelor, potrivirea fuzzy și comparațiile în limbaj natural direct în T-SQL.
Acestea facilitează detectarea duplicatelor, standardizarea înregistrărilor sau găsirea potrivirilor apropiate fără a se baza pe instrumente externe sau funcții definite de utilizator.

Prezentare generală a funcțiilor de codificare și similitudine

BASE64_ENCODE

Convertește un șir sau o valoare binară în format Base64. Utilizat în mod obișnuit pentru a codifica acreditări, date binare sau text care trebuie stocat sau transmis în siguranță prin JSON sau API-uri web.

BASE64_DECODE

Inversează codificarea, convertind textul codificat Base64 înapoi în forma sa originală.

Împreună, aceste două funcții ajută la gestionarea schimbului de date securizat și portabil între SQL Server și alte sisteme.


STRING_SIMILARITY

Returnează un scor de similitudine (între 0,0 și 1,0) comparând două șiruri bazate pe secvențe de caractere.
Un scor mai mare înseamnă că cele două corzi sunt mai asemănătoare.

EDIT_DISTANCE

Calculează numărul de editări cu un singur caracter (inserări, ștergeri sau înlocuiri) necesare pentru a schimba un șir în altul.

EDIT_DISTANCE_SIMILARITY

Convertește distanța de editare într-un scor de similitudine, unde 1,0 reprezintă o potrivire exactă și 0,0 înseamnă fără similitudine.

JARO_WINKLER_DISTANCE

Măsoară distanța dintre două șiruri pe baza transpunerilor și a potrivirilor de prefixe. Folosit în mod obișnuit pentru compararea numelor sau a identificatorilor scurți.

JARO_WINKLER_SIMILARITY

Returnează un scor de similitudine de la 0,0 la 1,0 folosind algoritmul Jaro-Winkler, subliniind similitudinea la începutul șirurilor.
Este util pentru potrivirea numelor, a înregistrărilor companiei sau a intrărilor utilizatorului care ar putea conține greșeli de scriere.


Exemplul 1: Codificarea și decodarea datelor sensibile

Un administrator de sistem dorește să stocheze cheile API în formă codificată pentru a preveni expunerea accidentală în timpul auditurilor sau exporturilor. Cheile pot fi codificate în Base64 înainte de a fi scrise într-un tabel de configurare.

Interogare: Exemplu de codificare și decodare

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;

Rezultate

Valoarea originală Valoare codificată DecodedValue
AppKey-2025-SECURIZAT QXBwS2V5LTIwMjUtU0VDVVJF AppKey-2025-SECURIZAT

Acest exemplu arată cum datele pot fi codificate în siguranță pentru stocare sau transfer și decodate atunci când este necesar, toate în T-SQL.


Exemplul 2: Comparați șirurile pentru similitudine

Un inginer de calitate a datelor trebuie să detecteze intrările aproape duplicate într-un tabel de clienți cauzate de introducerea inconsecventă a datelor.
Folosind funcțiile de similitudine ale SQL Server 2025, este posibil să identificați înregistrările care diferă doar ușor, cum ar fi greșelile de scriere sau spațiile suplimentare.

Exemple de date

ID client Nume client
1 Jonathon Smith
2 Jonathan Smith
3 J. Fierar
4 John Smith

Interogare: Comparați numele cu funcții de similitudine

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;

Rezultate

NumeA NumeB Scor de similitudine Pași de editare JaroScore
Jonathon Smith Jonathan Smith 0.93 1 0.94
Jonathan Smith John Smith 0.77 4 0.79
Jonathon Smith J. Fierar 0.68 6 0.70
J. Fierar John Smith 0.62 5 0.66

Această ieșire arată că "Jonathon Smith" și "Jonathan Smith" sunt aproape identice, în timp ce "J. Smith" și "John Smith" împărtășesc o asemănare parțială.
Aceste scoruri pot ajuta la identificarea duplicatelor probabile înainte de a îmbina sau curăța datele.


Exemplul 3: Combinarea codării și a similitudinii

În unele sisteme, identificatorii codificați trebuie comparați indirect. Prin decodarea și apoi aplicarea similitudinii, puteți detecta în continuare modele sau duplicate în datele codificate.

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;

Rezultat

CodificatA CodificatB Scor de similitudine
VXNlci03MTM= VXNlci03MTNY 0.93

Acest exemplu arată că, chiar și după decodarea valorilor Base64, SQL Server poate calcula scoruri de similitudine fără straturi de procesare suplimentare.


Rezumat

SQL Server 2025 extinde T-SQL cu funcții încorporate pentru codificarea Base64 și analiza similitudinii șirurilor.
Dezvoltatorii pot acum să codifice, să decodeze și să compare șiruri direct în interogările SQL pentru a îmbunătăți calitatea datelor, a detecta duplicatele și a gestiona transformări de text securizate.
Aceste instrumente simplifică sarcinile care anterior necesitau scripturi externe sau integrare CLR, îmbunătățind atât performanța, cât și mentenanța pentru sarcinile de lucru cu volum mare de text.