Pregunta

Me gustaría poder devolver todas las columnas en una tabla o en la tabla resultante de una unión y aún así poder transformar una fecha en una cadena por nombre.

Por ejemplo

Seleccionar ID, DESCRIPCIÓN, TO_CHAR (CHANGE_DATE, 'AAAA-MM-DD HH24: MI: SS') COMO FORMATED_DATE FROM MY_TABLE;

Esto está muy bien para estas tres columnas. Pero, la tabla en realidad tendrá muchas más columnas y puede unirse a otras tablas. Me gustaría poder usar un comodín para obtener todas las columnas y aún poder realizar la transformación TO_CHAR.

Algo así como: SELECT *, (CHANGE_DATE, 'AAAA-MM-DD HH24: MI: SS') COMO FORMATED_DATE FROM MY_TABLE;

Como habrás adivinado de TO_CHAR, estoy usando un Oracle, así que estoy usando PLSQL.

Entonces, mi pregunta específica es: ¿Existe una sintaxis que me permita seleccionar todas las columnas (a través de *) y aún así poder llamar a una función en una sola columna dentro de esas columnas.

¿Fue útil?

Solución

Lo más cercano que podrías hacer es algo como:

SELECT 
     MY_TABLE.*, 
     (CHANGE_DATE, 'YYYY-MM-DD HH24:MI:SS') AS FORMATED_DATE 
FROM MY_TABLE;

Otros consejos

En lugar de dar una conferencia aquí. Oracle es un poco más exigente que MSSQL al respecto, pero esto funcionó para mí.

SELECCIONAR  GENERAL.GOREMAL. * rownum ,fecha actual de GENERAL.GOREMAL

Lo siguiente es aceptable:

SELECT T1.*, T2.*, x + y as some_Z

o tal vez

SELECT compute_foo() as aColumn, *

El último de los cuales siempre mantendrá sus columnas especiales en el mismo lugar, al principio, sin importar cuántas columnas traiga el comodín.

En SQL Server, lo que escribió es perfectamente válido, supongo que también debería funcionar en Oracle. Solo tenga en cuenta que regresará la columna de fecha dos veces una vez en su forma original y una vez en la forma Formateada.

Para su información, el uso de SELECT * debe evitarse probablemente pero eso es para otra pregunta :-)

Para su información, si tiene uniones, seleccione * especialmente para evitarlo, ya que desperdicia recursos del servidor y de la red, especialmente porque todos los campos de unión tienen la misma información. Codificación basura como " select * " crea problemas de rendimiento que se vuelven muy difíciles de solucionar cuando cada consulta en el sistema está mal escrita. Sé que en SQL Server puede arrastrar las columnas desde el navegador de objetos, no se sorprendería si ORacle tuviera algo similar.

Además, select * puede crear muchos errores posteriores a medida que cambian las tablas de datos. Es una mala práctica no nombrar sus columnas en el orden específico que desea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top