Soundex

31/10/2003 - 12:01 por Manuel Madrigal | Informe spam
Hola a todos:

Mi pregunta es muy sencilla, ¿Hay alguna forma de buscar un registro de
una tabla que contenga una palabra exacta o parecida?

Un ejemplo:
Si busco en una tabla de artículos un teclado mecánico, con acento, y
escribo en la búsqueda solo mecanico, es decir, todos los artículos que
contengan la palabra mecánico y mecanico.

Con soundex, solo me compara la primera palabra y yo necesitaría que
fuese cualquier palabra del campo:

select codArticulo, descripcion from Articulos Where soundex(descripcion)
like soundex('mecanico')

Muchas gracias y un saludo.

Preguntas similare

Leer las respuestas

#6 Javier Loria
31/10/2003 - 23:58 | Informe spam
Hola:
Si te sirve de guia puedes revisar:
http://www.source-code.biz/snippets/vbasic/4.htm
Esta en VB 4.0 pero debe ser facil adaptarla a tus necesidades.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Manuel Madrigal escribio:
Hola de nuevo:

Para intentar subsanar el problema, he diseñado una función en
vb6 que medio me sirve. No busca las palabras parecidas pero al menos
sí las que tienen error ortográfico.

Esta es la función:

Function CrearLike(Cadena As String) As String
Dim TMP As String
Dim n As Long
' Recorremos la cadena
For n = 1 To Len(Cadena)
' Seleccionamos la letra de la cadena en mayúsculas
' y añadimos para cada letra sustituible su patrón de búsqueda
Select Case Mid$(UCase$(Cadena), n, 1)
Case "B", "V"
TMP = TMP & "[bvBV]"
Case "G", "J"
TMP = TMP & "[gjGJ]"
Case "A", "Á"
TMP = TMP & "[aáAÁ]"
Case "E", "É"
TMP = TMP & "[eéEÉ]"
Case "I", "Í"
TMP = TMP & "[iíIÍ]"
Case "O", "Ó"
TMP = TMP & "[oóOÓ]"
Case "U", "Ú"
TMP = TMP & "[uúUÚ]"
' Para el resto de letras, añadirlas sin mas
Case Else
TMP = TMP & Mid$(Cadena, n, 1)
End Select
Next n
' Devolver el resultado
CrearLike = TMP
End Function

Y como no, he aquí la pregunta: ¿Como hago lo mismo para la Y y
la LL? También os pediría opinión acerca de la función: ¿la veis
políticamente correcta?

Un saludo y muchas gracias.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida