una todas tabla solo sentencia seleccionar registro para obtener nombres nombre listar las estructura ejemplos desde consultas consulta columnas buscar sql sorting alphabetical

todas - obtener nombres de columnas desde una sentencia sql



SQL Listado alfabético de todos los nombres de columnas (5)

Yo sé eso

SELECT * FROM Table

listará todas las columnas en la tabla, pero estoy interesado en enumerar las columnas en orden alfabético.

Diga, tengo tres columnas, "nombre", "edad" y "sexo".

Quiero las columnas organizadas en el formato

|age| |name| |sex|

¿Es posible hacer esto con SQL?


Puede especificar las columnas que desea seleccionar:

SELECT age, name, sex FROM Table

Las columnas se mostrarán en el mismo orden que las especificó en la consulta.


SQL-92 Standard especifica que al usar SELECT * las columnas se referencian en la secuencia ascendente de su posición ordinal dentro de la tabla. Las secciones relevantes son 4.8 (columnas) y 7.9 (especificación de consulta). No conozco ninguna extensión del estándar que permita que las columnas se devuelvan en cualquier otro orden, probablemente porque el uso de SELECT * generalmente no se recomienda.

Puede usar SQL DDL para asegurarse de que las posiciones ordinales de las columnas coincidan con el orden alfabético deseado. Sin embargo, esto solo funcionará de la manera que desee al hacer referencia a una tabla sinlge en la cláusula FROM . Si se hace referencia a dos tablas, SELECT * devolverá las columnas de la primera tabla en orden de posición ordinal seguido de las columnas de la segunda tabla en posición ordinal, por lo que las columnas completas del conjunto de resultados pueden no estar en orden alfabético.


Si y no :-)

A SQL en sí no le importa en qué orden salgan las columnas pero, si tuviera que usar:

select age, name, sex from ...

usted encontrará que probablemente salieron en ese orden (aunque no estoy seguro de que los estándares SQL lo requieran).

Ahora puede que no quieras hacer eso, pero a veces la vida no es justa :-)

También tiene la otra posibilidad de utilizar las tablas de definición de datos DBMS para construir dinámicamente una consulta. Esto no es portátil, pero la mayoría de los DBMS ''suministran estas tablas (como SYSIBM.SYSCOLUMNS DB / 2) y usted puede seleccionar los nombres de las columnas desde allí de manera ordenada. Algo como:

select column_name from sysibm.syscolumns where owner = ''pax'' and table_name = ''movies'' order by column_name;

Luego usa los resultados de esa consulta para construir la consulta real:

query1 = "select column_name from sysibm.syscolumns" + " where owner = ''pax'' and table_name = ''movies''" + " order by column_name" rs = exec(query1) query2 = "select" sep = " " foreach colm in rs: query2 += sep + colm["column_name"] sep = ", " query2 += " from movies order by rating" rs = exec(query2) // Now you have the rs recordset with sorted columns.

Sin embargo, realmente debería examinar críticamente todas las consultas que seleccionan * : en la gran mayoría de los casos, es innecesario e ineficiente. Y la presentación de los datos es algo que probablemente debería hacerse en la capa de presentación, no en el DBMS en sí mismo: debería dejarse que el DBMS devuelva los datos de la manera más eficiente posible.


  • No hay forma de hacerlo automáticamente sin SQL dinámico.
  • SELECT * no es recomendable y no ordenará los nombres de las columnas
  • Deberías hacer explícitamente SELECT age, name, sex FROM

En el nivel SQL, no importa. No importa a ningún objeto de código de cliente

Si es importante, ordena cuando presentas los datos al cliente.

Lo siento, solo es así ...


Esto genera una consulta con todas las columnas ordenadas alfabéticamente en la instrucción de selección.

DECLARE @QUERY VARCHAR(2000) DECLARE @TABLENAME VARCHAR(50) = ''<YOU_TABLE>'' SET @QUERY = ''SELECT '' SELECT @QUERY = @QUERY + Column_name + '', '' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TABLENAME ORDER BY Column_name SET @QUERY = LEFT(@QUERY, LEN(@QUERY) - 4) + '' FROM ''+ @TABLENAME PRINT @QUERY EXEC(@QUERY)