Comparacion de strings

Deseo saber si existe algún software que facilite la comparación de strings,
lo estoy intentando con sql2000,
Estoy comparando varias tablas con descripciones de artículos que son iguales pero están escritos de manera diferente por ejem.
Tabla1: chumacera sin perno de 4"
Tabla2: chum s/perno 4"
Tabla3: chumacera 4" es perno

6 Respuestas

Respuesta
1
La verdad es que no lo sé. Antiguamente se utilizaba un algoritmo de comparación de strings ("soundex" creo que se llamaba), pero no sé si SQL2K tiene algo parecido (nunca que he necesitado usarlo). Busca por internet, ya que dicho algoritmo tiene que tener escrito el código para casi cualquier lenguaje.
Este algoritmo te comparaba 2 strings y te devolvía un número que te servía para conocer su proximidad. Tal vez te sirva para lo que tú quieres.
Respuesta
1
No conozco ningún software con esas características para comparación de cadena. En los casos donde he visto un ejemplo como el tuyo, la relación se hace a través de un código único. Pero si no es el caso, te recomiendo hacer un algoritmo en SQL para la comparación, más o menos con as siguientes características: Busque cada una de las palabras de la cadena en las otras cadenas, por ejemplo: si quieres buscar 'chumacera sin perno de 4" ', debes separar cada palabra y buscarla en las otras cadenas (chumacera, sin, perno, de, 4") e incluso dividir en grupos de 2,3,4... n palabras. Es claro que con este método obtendría muchas resultados, que los puedes ordenar, de acuerdo a la cantidad de palabras que concuerden, pero la decisión final de cuál es la cadena igual la tiene el usuario, no se puede de una forma automática, porque es posible obtener como resultado más de una cadena similar. Como tu lo dices en el ejemplo, las tres cadenas son iguales. Puedes hacer más inteligente ese algoritmo, si eliminas las preposiciones y artículos.
Magnifico, muchas gracias, aunque te parezca increíble casi todo lo que mencionas es lo que estoy intentando, sin embargo el esfuerzo es grande debido a que tengo tablas con más de 5 millones de registros, encontré algo referente al "soundex" y también encontré una empresa que ya lo hace, desconozco a que costo pero ahí vamos, la empresa se llama "Search Software America" y manejan conceptos de fonética, concordancia y duplicación así como indices "difusos" lo cual esta muy interesante, nuevamente te agradezco y te seguiré consultado.
Saludos
abel gonzalez (Monterrey, Mexico)
Respuesta
1
No conozco ningún software que haya eso, más allá de la clausula like y de las búsquedas de texto. Sobre las ultimas tienes un articulo en mi web sobre como crear indices de texto y buscar 'parecidos', pero vamos lo que buscas que yo sepa no existe. Lo siento.
Muchas gracias te agradezco, buscare algo en tu web, yo seguí buscando y encontré una empresa llamada "search Software America" creo que ellos ya lo hicieron les pedí información de su paquetería. Ya veremos.
Gracias nuevamente
Saludos
abel gonzalez (monterrey, Mexico)
Respuesta
1
Que te parece si pruebas esto
select tabla1.decr,tabla2.decr,tabla3.decr from tabla1,tabla2,tabla3 where
Tabla1. Decr like('chum%') and tabla2. Decr like('chum%') and tabla3. Decr like('chum%')
Respuesta
1
El Servicio de SQL que realiza las consultas de texto es el Servicio de Búsqueda de Microsoft. Es un motor de indexación y búsqueda de texto. Es el mismo que utiliza IIS (con el nombre de index server). El servicio de Búsqueda de Texto solo puede instalarse cuando instalas SQL en Windows NT Server (no se instala ni en NT WoekStation ni W 95/98). Para instalarlo selecciona la opción de instalación personalizada de SQL Server, desselecciona todos los componentes y selecciona la Búsqueda de Texto.. El servicio de Búsqueda de Texto opera de manera separada de SQL Server. Solo puedes tener un indice de texto por tabla...los procedimientos almacenados relacionados con el tema son: sp_fulltext_database, sp_fulltext_catalog, sp_fulltext_table, sp_fulltext_column, sp_fulltext_service.
Una vez instalado y configurado el Servicio de Búsqueda podrás utilizar funciones como contains, freetext.
Si no puedes utilizar este servicio por por o por y, te recomiendo que trates de hacer tus consultas usando funciones como soundex que te devuelve un igual código en palabras similares aun cuando no se hayan escrito iguales o charindex que te permite buscar una cadena dentro de otra...
Suerte!
Te agradezco mucho, voy a instalar de nuevo el sql e intentare la opción que me indicas, ya te avisare el resultado,
gracias de nuevo.
abl gonzalez (monterrey, mexico)
Respuesta
1
Compadre, las cadenas que me muestras son diferentes (para la Pc, completamente diferentes), para que las trate como una misma, entonces asocialas a un Id de conceptos, y haci aunque selecciones el concepto que sea, mediante el Id, referirá al mismo, sin importar las cadenas que contenga el campo de descripción.
Ahora, lo más que se podría hacer seria que TU le indicaras a alguna función de comparación de cadenas, HASTA que carácter quieres que te "cheque" las coincidencias. En Sql no existe directamente, TU debes armar esta consulta manejando diferentes funciones de manejo de strings. A la mano no tengo las que aplican en SQL, pero si hay varias. Ahora si lo estas haciendo mediante un lenguaje de programación, desde ahí fórmula las funciones.
Te agradezco mucho, estey usando el soundex, ademas de partir el campo en secciones según su longitud y parece que esta funcionando en un gran porcentaje.
Gracias de nuevo y que estés bien
abel gonzalez (monterrey, mexico)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas