25 enero 2008

Funciones útiles en Oracle y MySQL

Por si alguien necesita cambiar entre MySQL y Oracle, aquí están algunas de las funciones más habituales que permiten desde SQL, y la equivalencia entre ambos sistemas:


Funciones de agregación

Las funciones que trabajan sobre un conjunto de datos, como COUNT, SUM,
AVG, MIN y MAX funcionarán en Oracle igual que en MySQL.



Funciones de cadenas



  • Convertir a minúsculas

  • MySQL: LOWER o LCASE

  • Oracle: LOWER: LOWER(nombre)



  • Convertir a mayúsculas

  • MySQL: UPPER o UCASE

  • Oracle: UPPER: UPPER(ciudad)




  • Extraer una subcadena

  • MySQL: Para cualquier posición: MID, SUBSTR o SUBSTRING; desde la izquierda: LEFT; desde la derecha: RIGHT

  • Oracle: SUBSTR: SUBSTR(nombre, 1, 4)




  • Ver si una cadena contiene a otra, y en qué posición

  • MySQL: INSTR o LOCATE

  • Oracle: INSTR: INSTR(nombre, 'Juan')




  • Eliminar espacios iniciales o finales

  • MySQL: RTRIM para la derecha, LTRIM a la izquierda, TRIM en ambos lados

  • Oracle: RTRIM, LTRIM, TRIM: TRIM(direccion)




  • Reemplazar parte de una cadena por otra

  • MySQL: REPLACE

  • Oracle: REPLACE: REPLACE(nombre, 'D.', 'Don')




  • Longitud de la cadena

  • MySQL: LENGTH

  • Oracle: LENGTH: LENGTH(nombre)




  • Formar una cadena a partir de varias

  • MySQL: CONCAT, para dos o más subcadenas

  • Oracle: CONCAT, para dos subcadenas: CONCAT(apellidos, nombre); doble barra para concatenar varias: apellido || ', ' || nombre




Funciones avanzadas


  • Esquivar valores nulos

  • MySQL: IFNULL: IFNULL(direccion, 'No disponible')

  • Oracle: NVL: NVL(direccion, 'No disponible')




  • Comprobar condiciones

  • MySQL: CASE: SELECT CASE tipoCliente WHEN 'p' THEN 'Propio' WHEN 'a' THEN 'Ajeno' ELSE 'Desconocido'; IF: SELECT IF(tipoCliente='p', 'Propio', 'Ajeno')

  • Oracle: DECODE: SELECT DECODE (tipoCliente, 'p','Propio', 'a','Ajeno', 'Desconocido' FROM CLIENTE