Es mostren els missatges amb l'etiqueta de comentaris translate. Mostrar tots els missatges
Es mostren els missatges amb l'etiqueta de comentaris translate. Mostrar tots els missatges

divendres, 14 de juny del 2013

Condicions a Oracle ignorant accents i majúscules

Moltes vegades succeeix que, en anar a escriure les condicions d'una consulta, aquestes es fan sobre camps de text que poden contenir accents, majúscules, minúscules, etc. i no es vol que aquests elements distorsionin els resultats.

Una opció (en ORACLE) és usar la funció translate.

Aquesta funció rep tres paràmetres:

  1. La cadena a tractar.
  2. Un conjunt de caractèrs a substituir.
  3. Els caràcters pels que substituir.
El que fa és, sobre la cadena a tractar, per cada ocurrència de (2), busca el caràcter que està a la mateixa posició de (3) i el canvia.



Exemple:


    SELECT nom
      FROM usuaris o
     WHERE TRANSLATE(UPPER(o.nom),'ÁÉÍÓÚÀÈÌÒÙÄËÏÖÜÂÊÎÔÛ','AEIOUAEIOUAEIOU')
      LIKE TRANSLATE(UPPER('%lluis%'),'ÁÉÍÓÚÀÈÌÒÙÄËÏÖÜÂÊÎÔÛ','AEIOUAEIOUAEIOU') ;

Aquesta consulta retorna les files que tenen el camp o.nom amb valors: lluis,lluís, Lluís, Lluïs, etc.