Resulta muy útil conocer la forma en que se pueden concatenar los valores de algunas columnas al hacer consultas SQL, de forma que el resultado de la concatenación sea tratada como una pseudocolumna, por ejemplo, desde un programa Java. Con tan sólo incluir un alias para el resultado de la concatenación éste puede ser referenciado como si fuera una columna física.
Como ejemplo, partamos de esta tabla de direcciones:
| ... | calle | cp | localidad |
| ... | Mayor | 0001 | Tembleque |
| ... | Real | 0002 | Villanueva del Arzobispo |
En Oracle, es posible devolver las tres columnas (calle, cp, localidad) como una sola, llamésmola, por ejemplo, direccion (sin tilde, claro), de la siguiente forma:
SELECT calle || ' ' || cp || ' ' || localidad AS direccion
FROM tabla;
De esta manera, es posible recuperar los resultados a través del nombre direccion, por ejemplo, con el método getString(String columna) de la interfaz ResultSet de Java, delegando en este caso a Oracle el coste de la operación de concatenación.
Esto mismo se puede conseguir, aunque es más largo de escribir, con la función concat(), existente también en MySQL y equivalente al operador '+' en SQL Server, aunque en Oracle sólo admite dos operadores, por lo que la consulta anterior quedaría de la siguiente forma con el operador concat():
Esto mismo se puede conseguir, aunque es más largo de escribir, con la función concat(), existente también en MySQL y equivalente al operador '+' en SQL Server, aunque en Oracle sólo admite dos operadores, por lo que la consulta anterior quedaría de la siguiente forma con el operador concat():
SELECT concat(concat(concat(concat(calle,' '), cp), ' '), localidad) AS direccion
FROM tabla;
Lo cual, sin duda, queda más engorroso. En MySQL, sin embargo, la función concat() puede concatenar múltiples columnas.


0 comentarios:
Publicar un comentario en la entrada