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

2 comentarios:

Koki dijo...

Hay grandes espacios en blanco en el post. Supongo que iba código ahi y algo se descuadró...

Nacho Cabanes dijo...

Sí, se ve que a Blogspot no le gustan las tablas ;-)

Lo vi al publicar, pero no tuve tiempo de recolocarlo en ese momento.

Lo he reescrito como lista. Una lista debería ser menos legible que una tabla (en general), pero al menos ahora es algo más compacto. Gracias por recordármelo. :-)