Estoy queriendo saber si hay una manera, en Oracle SQL, de comparar dos cadenas para semejanzas con excepción de =
o like
. Por ejemplo, SQL Server tiene una función difference(str1, str2)
que compara las dos cadenas y da una clasificación de similitud (0 a 4). No es exactamente lo que quiero pero eso aún sería extremadamente útil.Comparaciones avanzadas de cadenas en Oracle SQL
que estaba esperando específicamente para funciones o métodos eso:
- comparar una cadena de caracteres por el carácter (devolver el número de coincidencias exactas)
- saber cuántos caracteres hay en una cadena, pero en el lugar equivocado
El uso principal sería para cadenas de la misma longitud, que contienen números (ID, números de teléfono, etc.) Para mis propósitos, lo usaría para buscar posibles coincidencias en las que l etters/numbers pueden haber sido transpuestos. Soundex(string)
funciona bien para cadenas alfa, pero parece ignorar los números (por una buena razón).
No tengo privilegios para crear funciones por mi cuenta, pero si alguien conoce un método para hacerlo yo estaría interesado en escucharlo. Una solución para comparar char-a-char (que sólo funciona si se conoce el número máximo de caracteres) es:
--For char-to-char counts
Decode(substr(ID1,1,1), substr(ID2,1,1), 1, 0) +
Decode(substr(ID1,2,1), substr(ID2,2,1), 1, 0) +
[...]
Decode(substr(ID1,N,1), substr(ID2,N,1), 1, 0)
Pero eso es casi tan poco elegante como usted puede conseguir.
Cualquier ayuda sería muy apreciada.
posible duplicado de [Búsqueda de las mejores coincidencias para un valor de cadena - Oracle/Java] (http://stackoverflow.com/questions/8068162/finding-best-matches-for-a-string-value-oracle-java) –