Aquí podría ser tu PUBLICIDAD


Seleccione * de la Tabla y aún realice alguna función en una sola columna nombrada

votos
3

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

Por ejemplo

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

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

Algo como: SELECCIONAR *, (CHANGE_DATE, 'YYYY-MM-DD HH24: MI: SS') COMO FORMATED_DATE FROM MY_TABLE;

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

Entonces mi pregunta específica es: ¿Hay una sintaxis que me permita seleccionar todas las columnas (vía *) y aún así poder invocar una función en una sola columna dentro de esas columnas?

Publicado el 12/03/2009 a las 17:09
fuente por usuario Marc
En otros idiomas...        العربية       

5 respuestas

votos
4

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

SELECT 
     MY_TABLE.*, 
     (CHANGE_DATE, 'YYYY-MM-DD HH24:MI:SS') AS FORMATED_DATE 
FROM MY_TABLE;
Respondida el 12/03/2009 a las 05:16
fuente por usuario TheTXI


Aquí podría ser tu PUBLICIDAD


votos
2

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

GENERAL.GOREMAL SELECT. *, Rownum, fecha_actual de GENERAL.GOREMAL

Respondida el 14/10/2012 a las 01:52
fuente por usuario jag

votos
1

Lo siguiente es aceptable:

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

o quizás

SELECT compute_foo() as aColumn, *

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

Respondida el 12/03/2009 a las 05:17
fuente por usuario Joe Koberg

votos
0

Para su información, si tiene uniones, seleccione * es especialmente recomendable ya que desperdicia los recursos del servidor y de la red, especialmente porque todos los campos de unión tienen la misma información. La codificación no deseada 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 estaría sorprendido si ORacle tuviera algo similar.

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

Respondida el 12/03/2009 a las 07:18
fuente por usuario HLGEM

votos
0

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

FYI Usar SELECT * debería ser evitado probalmente, pero eso es para otra pregunta :-)

Respondida el 12/03/2009 a las 05:15
fuente por usuario JoshBerke