SQL Server - Comparacion Similitud de un campo

 
Vista:
sin imagen de perfil
Val: 50
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Comparacion Similitud de un campo

Publicado por JJ (19 intervenciones) el 24/06/2020 20:52:35
Buenas tardes,

Tengo una tabla con registros llamada Funcionarios, pero se ha identificado que una misma persona está registrada con nombre diferente (no le agregaron el segundo nombre) o el nombre lo acomodaron en distinto orden, o mal escrito

hay alguna función que me puede indicar el porcentaje de coincidencia entre los dos registros?

ejemplo 1

nombre fecha ingreso departamento temp
Luis Cordero Corrales 02-01-2020 TIC null
Corrales Cordero Luis Alberto 02-01-2020 TIC null

ejemplo 2
Maria Quirós Castro 03-05-2010 Presup null
María Victoria Quirós Castro 03-05-2010 Presup null

ejemplo 3
Luiz Miguel Cordero Chaves 02-06-2018 Legal null
Luis Miguel Cordero Chavez 02-06-2018 Legal null

esos son apenas unos ejemplos, que corresponden a 3 personas distintas y no a 6, pensaba en crear un variable temporal que me indique el porcerntaje de coincidencia del registro para de esta manera identificar que son las mismas personas.

Pense en la sentencia: Select Diference o Select SOUNDEX, sin embargo el resultado que me indica no es lo esperado, conocen de alguna funcion para resolver mi problema.

estoy utilizadno sql

SQL Server Management Studio 15.0.18206.0
Microsoft Analysis Services Client Tools 15.0.1567.0
Microsoft Data Access Components (MDAC) 10.0.14393.0
Microsoft MSXML 3.0 6.0
Microsoft Internet Explorer 9.11.14393.0
Microsoft .NET Framework 4.0.30319.42000
Operating System 10.0.14393
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.628
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Comparacion Similitud de un campo

Publicado por Isaias (4191 intervenciones) el 25/06/2020 00:28:07
Para saber que VERSION de motor tiene, ejecute la siguiente instruccion

SELECT @@Version

Publique el resultado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 50
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Comparacion Similitud de un campo

Publicado por JJ (19 intervenciones) el 25/06/2020 16:40:52
Gracias Isais, esta es la versión

Microsoft SQL Server 2017 (RTM-CU19) (KB4535007) - 14.0.3281.6 (X64)
Jan 23 2020 21:00:04
Copyright (C) 2017 Microsoft Corporation
Standard Edition (64-bit) on Windows Server 2016 Standard 10.0 <X64> (Build 14393: ) (Hypervisor)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Plutarco
Val: 74
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Comparacion Similitud de un campo

Publicado por Plutarco (36 intervenciones) el 25/06/2020 17:46:17
Hola, buenos días

Yo creo que es un poco más complejo que eso y que la mejor opción es que tengas campos separados para los datos, es decir, nombre, apellido paterno, apellido materno, etc. Pero si es lo que se tiene entonces yo lo que haría aprovechando la versión de SQL sería usar la función STRING_SPLIT() que está a partir de SQL Server 2016. El propósito de esta función de cadena incorporada es convertir matrices de cadenas en columnas que están separadas por cualquier separador.

Una vez separadas la palabras que componen tu campo no será problema saber si existe cada palabra dentro del registro que quieres comparar.

espero haber sido de ayuda en tu problema.

Puedes revisar esta li8ga para ver el funcionamiento completo de la función:
https://docs.microsoft.com/en-us/sql/t-sql/functions/string-split-transact-sql?view=sql-server-ver15

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 50
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Comparacion Similitud de un campo

Publicado por JJ (19 intervenciones) el 29/06/2020 18:00:43
Gracias Plutarco,

revisè la info pero me continua identificando diferente, si es funcional si tuviera esa estandarizaciòn en el campo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Plutarco
Val: 74
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Comparacion Similitud de un campo

Publicado por Plutarco (36 intervenciones) el 29/06/2020 20:16:56
Es correcto, la función por si misma no te resuelve el problema, pero la idea es construir una función que te lo haga a partir de una matrz de palabras las cuales vas a comparar con los datos guardados en tu campo.

Digo, no hay que esperar que siempre exista una función que haga exactamente lo que necesitamos porque entonces qué sentido tendríamos de existir los desarrolladores??

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 50
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Comparacion Similitud de un campo

Publicado por JJ (19 intervenciones) el 29/06/2020 17:59:37
Hola Isaìas, pudiste ver lo de la versiòn ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de melqui
Val: 11
Ha aumentado su posición en 8 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Comparacion Similitud de un campo

Publicado por melqui (4 intervenciones) el 30/06/2020 10:46:00
Hola jj,

ya lo intentaste usando la clausula IN?
esta clausula se trabaja por palabras llaves, exemplo
si una persona tiene diferentes nombres
"melqui serrano arimuya"
"serrano arimuya melqui"
"arimuya serrano melqui"

el lo va coger por palabras llaves si digitas "arimuya" lo cogera todo los registro que contiene esa palabras sea que este al final, en el medio o al inicio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.628
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Comparacion Similitud de un campo

Publicado por Isaias (4191 intervenciones) el 30/06/2020 19:16:36
Al utilizar IN con grandes cantidades de datos, puedes llegar a colapsar a un motor de base de datos, es mejor DQS, ya que es un servicio externo al motor de la base de datos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 50
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Comparacion Similitud de un campo

Publicado por JJ (19 intervenciones) el 01/07/2020 17:55:29
correcto, hice una prueba y no es funcional en esta oportunidad la claúsula IN.

Alguna otra recomendación Isais que tengas para resolver mi inconveniente?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.628
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Comparacion Similitud de un campo

Publicado por Isaias (4191 intervenciones) el 01/07/2020 18:39:28
Existe un servicio de Microsoft - SQL Server llamado DQS (Data Quality Service), que sirve precisamente para resolver tu problema.

https://docs.microsoft.com/es-es/sql/data-quality-services/data-quality-services?view=sql-server-ver15#:~:text=SQL%20Server%20Data%20Quality%20Services,de-duplication%20of%20your%20data.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar