soundex

08/01/2008 - 21:34 por Imac_man | Informe spam
Hola,

Necesito hacer un query con soundex pero sobre un campo que almacena mas de
una palabra, por ejemplo soundex de un nombre completo. como lo puedo hacer
si el soundex solo funciona con una palabra.

lo que necesito que funcione es algo asi:
soundex('juan antonio melgarejo perez') = soundex('mlgarrejo')

gracias de antemano
 

Leer las respuestas

#1 Carlos M. Calvelo
09/01/2008 - 13:30 | Informe spam
On 8 jan, 21:34, "Imac_man" wrote:
Hola,

Necesito hacer un query con soundex pero sobre un campo que almacena mas de
una palabra, por ejemplo soundex de un nombre completo. como lo puedo hacer
si el soundex solo funciona con una palabra.

lo que necesito que funcione es algo asi:
soundex('juan antonio melgarejo perez') = soundex('mlgarrejo')

gracias de antemano



Lo primero que se me ocurre es crear un función que recorra
todas las palabras y devuelva 0 si no encuentra ninguna
palabra con el mismo soundex de otra palabra dada, o 1
si sí la encuentra.

Depués puedes hacer algo como:
dbo.fn_soundexN('juan antonio melgarejo perez', 'mlgarrejo') = 1

Aquí la tienes la función:


CREATE FUNCTION fn_soundexN ( @S VARCHAR(1000), @SND VARCHAR(100))
RETURNS BIT AS
BEGIN

DECLARE @P INT, @W VARCHAR(100)

SET @SND=SOUNDEX(@SND)

SET @S = LTRIM(RTRIM(@S))

WHILE @S <> ''
BEGIN
SET @P = CHARINDEX(' ', @S)
IF @P = 0
BEGIN
SET @W = SUBSTRING(@S, 1, LEN(@S))
SET @S = ''
END
ELSE
BEGIN
SET @W = SUBSTRING(@S, 1, @P - 1)
SET @S = LTRIM(RIGHT(@S, LEN(@S) - @P))
END

IF SOUNDEX(@W) = @SND
RETURN 1

END

RETURN 0
END


Saludos,
Carlos

Preguntas similares