Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

funcion para comparar cadenas

Estas en el tema de funcion para comparar cadenas en el foro de Mysql en Foros del Web. Buenas, estoy haciendo una consulta cruzada de t1 y t2 tiene la misma estructura con campos nombre, direccion, etc y veo la necesidad de compara ...
  #1 (permalink)  
Antiguo 19/05/2009, 16:06
 
Fecha de Ingreso: febrero-2006
Mensajes: 44
Antigüedad: 18 años, 1 mes
Puntos: 0
funcion para comparar cadenas

Buenas, estoy haciendo una consulta cruzada
de t1 y t2 tiene la misma estructura con campos nombre, direccion, etc y veo la necesidad de compara si existen registro en el campo nombre de t1 que tengan similitud relativa con campo nombre de t2

ejemplo:
t1
nombre: Juan Jose Espinoza Ugarte
codigo: 44

t2
nombre: Juam Jose Espinosa Ugarte
codigo: 123

esos registros son iguales, pero por tema de descuido se digito diferente unos caracteres, en el filtro eso debe aceptarse como mínimo o inclusive algun caracter más. espero ue ayuden, porque ya me pase buscando horas una funcion parecida a la funcion levenshtein() de PHP, necesito hacerlo en mysql por tema de valocidad, ya qu se manejan unos 200,000 contra unos 250 a comparar, y en php se demora excesivamente.

Gracias
  #2 (permalink)  
Antiguo 19/05/2009, 16:12
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: funcion para comparar cadenas

Mira esto, te puede servir.

http://codejanitor.com/wp/2007/02/10...ored-function/

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 19/05/2009, 16:30
 
Fecha de Ingreso: febrero-2006
Mensajes: 44
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: funcion para comparar cadenas

bueno ya encontre la solucion, si alguien desea usarla adjunto la funcion que encontre:

Código PHP:
CREATE FUNCTION LEVENSHTEIN (s1 VARCHAR(255), s2 VARCHAR(255))
  
RETURNS INT
    DETERMINISTIC
      BEGIN
        
DECLARE s1_lens2_lenijcc_tempcost INT;
        DECLARE 
s1_char CHAR;
        DECLARE 
cv0cv1 VARBINARY(256);
        
SET s1_len CHAR_LENGTH(s1), s2_len CHAR_LENGTH(s2), cv1 0x00110;
        IF 
s1 s2 THEN
          
RETURN 0;
        ELSEIF 
s1_len 0 THEN
          
RETURN s2_len;
        ELSEIF 
s2_len 0 THEN
          
RETURN s1_len;
        ELSE
          WHILE 
<= s2_len DO
            
SET cv1 CONCAT(cv1UNHEX(HEX(j))), 1;
          
END WHILE;
          WHILE 
<= s1_len DO
            
SET s1_char SUBSTRING(s1i1), icv0 UNHEX(HEX(i)), 1;
            WHILE 
<= s2_len DO
                
SET c 1;
                IF 
s1_char SUBSTRING(s2j1THEN SET cost 0; ELSE SET cost 1END IF;
                
SET c_temp CONV(HEX(SUBSTRING(cv1j1)), 1610) + cost;
                IF 
c_temp THEN SET c c_tempEND IF;
                
SET c_temp CONV(HEX(SUBSTRING(cv1j+11)), 1610) + 1;
                IF 
c_temp THEN SET c c_tempEND IF;
                
SET cv0 CONCAT(cv0UNHEX(HEX(c))), 1;
            
END WHILE;
            
SET cv1 cv01;
          
END WHILE;
        
END IF;
        RETURN 
c;
      
END 
credito de la pagina
codejanitor.com
les dejaria la ruta completa, pero no tengo autorizacion.
  #4 (permalink)  
Antiguo 19/05/2009, 16:31
 
Fecha de Ingreso: febrero-2006
Mensajes: 44
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: funcion para comparar cadenas

Cita:
Iniciado por huesos52 Ver Mensaje
Mira esto, te puede servir.

[

Un saludo.
Gracias por el apoyo, creo que contestamos casi simultaneamente,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:25.