Funcții de codificare și similitudine
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.