Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: SQL Server 2025 (17.x) Versión preliminar
de la base de datos SQL de Azure SQL Database
deAzure SQL Managed Instance
en Microsoft Fabric
Utiliza coincidencia difusa o aproximada de cadenas para comprobar si dos cadenas son similares y calcular la diferencia entre ellas. Use esta funcionalidad para identificar cadenas que pueden ser diferentes debido a daños en los caracteres. Las causas de la corrupción pueden incluir errores ortográficos, caracteres transpuestos, caracteres que faltan o abreviaturas. La coincidencia difusa de cadenas utiliza algoritmos para detectar cadenas textualmente similares.
Nota:
- La coincidencia difusa de cadenas de texto está actualmente en versión preliminar.
- Soporte de SQL Server para la coincidencia de cadenas aproximadas introducido en la versión preliminar de SQL Server 2025 (17.x).
Funciones difusas
Función | Descripción |
---|---|
EDIT_DISTANCE | Calcula el número de inserciones, eliminaciones, sustituciones y transposiciones necesarias para transformar una cadena a otra. |
EDIT_DISTANCE_SIMILARITY | Calcula un valor de similitud comprendido entre 0 (que indica ninguna coincidencia) y 100 (lo que indica la coincidencia completa). |
JARO_WINKLER_DISTANCE | Calcula la distancia de edición entre dos cadenas que dan preferencia a las cadenas que coinciden desde el principio para una longitud de prefijo establecida. |
JARO_WINKLER_SIMILARITY | Calcula un valor de similitud comprendido entre 0 (que indica ninguna coincidencia) a 1 (lo que indica la coincidencia completa). |
Nota:
Actualmente, las funciones no se adhieren a la semántica de comparación definida por la configuración de intercalación, como la insensibilidad a mayúsculas y minúsculas y otras reglas específicas de intercalación. Una vez implementada la compatibilidad con las reglas de intercalación, la salida de las funciones reflejará esta semántica y puede cambiar en consecuencia.
Ejemplos
Los siguientes ejemplos demuestran las funciones de coincidencia difusa de cadenas.
Tabla de ejemplo
Para poder ejecutar consultas de ejemplo, cree y rellene una tabla de ejemplo.
Para crear y rellenar la tabla de ejemplo, conéctese a una base de datos de usuario que no sea de producción y ejecute el siguiente script:
-- Step 1: Create the table
CREATE TABLE WordPairs (
WordID INT IDENTITY(1,1) PRIMARY KEY, -- Auto-incrementing ID
WordUK NVARCHAR(50), -- UK English word
WordUS NVARCHAR(50) -- US English word
);
-- Step 2: Insert the data
INSERT INTO WordPairs (WordUK, WordUS) VALUES
('Colour', 'Color'),
('Flavour', 'Flavor'),
('Centre', 'Center'),
('Theatre', 'Theater'),
('Organise', 'Organize'),
('Analyse', 'Analyze'),
('Catalogue', 'Catalog'),
('Programme', 'Program'),
('Metre', 'Meter'),
('Honour', 'Honor'),
('Neighbour', 'Neighbor'),
('Travelling', 'Traveling'),
('Grey', 'Gray'),
('Defence', 'Defense'),
('Practise', 'Practice'), -- Verb form in UK
('Practice', 'Practice'), -- Noun form in both
('Aluminium', 'Aluminum'),
('Cheque', 'Check'); -- Bank cheque vs. check
Ejemplo EDIT_DISTANCE
SELECT WordUK, WordUS, EDIT_DISTANCE(WordUK, WordUS) AS Distance
FROM WordPairs
WHERE EDIT_DISTANCE(WordUK, WordUS) <= 2
ORDER BY Distance ASC;
Devoluciones:
WordUK WordUS Distance
------------------------------ ------------------------------ -----------
Practice Practice 0
Aluminium Aluminum 1
Honour Honor 1
Neighbour Neighbor 1
Travelling Traveling 1
Grey Gray 1
Defence Defense 1
Practise Practice 1
Colour Color 1
Flavour Flavor 1
Organise Organize 1
Analyse Analyze 1
Catalogue Catalog 2
Programme Program 2
Metre Meter 2
Centre Center 2
Theatre Theater 2
Ejemplo EDIT_DISTANCE_SIMILARITY
SELECT WordUK, WordUS, EDIT_DISTANCE_SIMILARITY(WordUK, WordUS) AS Similarity
FROM WordPairs
WHERE EDIT_DISTANCE_SIMILARITY(WordUK, WordUS) >=75
ORDER BY Similarity DESC;
Devoluciones:
WordUK WordUS Similarity
------------------------------ ------------------------------ -----------
Practice Practice 100
Travelling Traveling 90
Aluminium Aluminum 89
Neighbour Neighbor 89
Organise Organize 88
Practise Practice 88
Defence Defense 86
Analyse Analyze 86
Flavour Flavor 86
Colour Color 83
Honour Honor 83
Catalogue Catalog 78
Programme Program 78
Grey Gray 75
Ejemplo JARO_WINKLER_DISTANCE
SELECT WordUK, WordUS, JARO_WINKLER_DISTANCE(WordUK, WordUS) AS Distance
FROM WordPairs
WHERE JARO_WINKLER_DISTANCE(WordUK, WordUS) <= .05
ORDER BY Distance ASC;
Devoluciones:
WordUK WordUS Distance
------------------------------ ------------------------------ -----------
Practice Practice 0
Travelling Traveling 0.01999998
Neighbour Neighbor 0.02222222
Aluminium Aluminum 0.02222222
Theatre Theater 0.02857143
Flavour Flavor 0.02857143
Centre Center 0.03333336
Colour Color 0.03333336
Honour Honor 0.03333336
Catalogue Catalog 0.04444444
Programme Program 0.04444444
Metre Meter 0.04666668
Ejemplo JARO_WINKLER_SIMILARITY
SELECT WordUK, WordUS, JARO_WINKLER_SIMILARITY(WordUK, WordUS) AS Similarity
FROM WordPairs
WHERE JARO_WINKLER_SIMILARITY(WordUK, WordUS) > 0.9
ORDER BY Similarity DESC;
Devoluciones:
WordUK WordUS Similarity
------------------------------ ------------------------------ -----------
Practice Practice 1
Travelling Traveling 0.98
Neighbour Neighbor 0.9777778
Aluminium Aluminum 0.9777778
Flavour Flavor 0.9714286
Theatre Theater 0.9714286
Centre Center 0.9666666
Colour Color 0.9666666
Honour Honor 0.9666666
Catalogue Catalog 0.9555556
Programme Program 0.9555556
Metre Meter 0.9533333
Organise Organize 0.95
Practise Practice 0.95
Defence Defense 0.9428572
Analyse Analyze 0.9428572
Consulta de ejemplo con todas las funciones
En la consulta siguiente se muestran todas las funciones de expresión regular disponibles actualmente.
SELECT T.source_string,
T.target_string,
EDIT_DISTANCE(T.source_string, T.target_string) as ED_Distance,
JARO_WINKLER_DISTANCE(T.source_string, T.target_string) as JW_Distance,
EDIT_DISTANCE_SIMILARITY(T.source_string, T.target_string) as ED_Similarity,
CAST(JARO_WINKLER_SIMILARITY(T.source_string, T.target_string)*100 as int) as JW_Similarity
FROM (VALUES('Black', 'Red'),
('Colour', 'Yellow'),
('Colour', 'Color'),
('Microsoft', 'Msft'),
('Regex', 'Regex')) as T(source_string, target_string);
Devoluciones:
source_string target_string ED_Distance JW_Distance ED_Similarity JW_Similarity
-------------- -------------- -------------- -------------- -------------- --------------
Black Red 5 1 0 0
Colour Yellow 5 0.4444444 17 55
Colour Color 1 0.03333336 83 96
Microsoft Msft 5 0.4916667 44 50
Regex Regex 0 0 100 100
Limpieza
Una vez que haya terminado de usar los datos de ejemplo, elimine la tabla de ejemplo.
IF OBJECT_ID('dbo.WordPairs', 'U') IS NOT NULL
BEGIN
DROP TABLE dbo.WordPairs;
END