tutte - sql select tutti i campi




Come posso ottenere i nomi delle colonne da una tabella in SQL Server? (12)

È possibile ottenere queste informazioni e molto, molto di più interrogando le visualizzazioni dello schema di informazioni .

Questa query di esempio:

SELECT *
FROM Northwind.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Customers'

Può essere creato su tutti questi oggetti DB:

Vorrei interrogare il nome di tutte le colonne di una tabella. Ho trovato come farlo in:

Ma ho bisogno di sapere: come può essere fatto in Microsoft SQL Server (2008 nel mio caso)?


È possibile scrivere questa query per ottenere il nome della colonna e tutti i dettagli senza utilizzare INFORMATION_SCHEMA in MySql:

SHOW COLUMNS FROM database_Name.table_name;

È possibile utilizzare la stored procedure sp_columns che restituirebbe le informazioni relative a tutte le colonne per una determinata tabella. Maggiori informazioni possono essere trovate qui http://msdn.microsoft.com/en-us/library/ms176077.aspx

Puoi anche farlo con una query SQL. Qualcosa del genere dovrebbe aiutare -

SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('dbo.yourTableName') 

O una variazione potrebbe essere:

SELECT   o.Name, c.Name
FROM     sys.columns c 
         JOIN sys.objects o ON o.object_id = c.object_id 
WHERE    o.type = 'U' 
ORDER BY o.Name, c.Name

Ciò ottiene tutte le colonne da tutte le tabelle, ordinate in base al nome della tabella e quindi sul nome della colonna.


--Questa è un'altra variante utilizzata per documentare un database di grandi dimensioni per la conversione (Modificato su --remove colonne statiche)

SELECT o.Name                   as Table_Name
     , c.Name                   as Field_Name
     , t.Name                   as Data_Type
     , t.length                 as Length_Size
     , t.prec                   as Precision_
FROM syscolumns c 
     INNER JOIN sysobjects o ON o.id = c.id
     LEFT JOIN  systypes t on t.xtype = c.xtype  
WHERE o.type = 'U' 
ORDER BY o.Name, c.Name

- Nel join sinistro, c.type viene sostituito da c.xtype per ottenere i tipi varchar


Puoi provare questo.Questo fornisce tutti i nomi delle colonne con i loro rispettivi tipi di dati.

desc <TABLE NAME> ;

Questa domanda SO manca il seguente approccio:

-- List down all columns of table 'Logging'
select * from sys.all_columns where object_id = OBJECT_ID('Logging')

Usando questa query si ottiene la risposta:

select Column_name 
from Information_schema.columns 
where Table_name like 'table name'

Verificherà se il dato la table è Tabella base .

SELECT 
    T.TABLE_NAME AS 'TABLE NAME',
    C.COLUMN_NAME AS 'COLUMN NAME'
FROM INFORMATION_SCHEMA.TABLES T
INNER JOIN INFORMATION_SCHEMA.COLUMNS C ON T.TABLE_NAME=C.TABLE_NAME
    WHERE   T.TABLE_TYPE='BASE TABLE'
            AND T.TABLE_NAME LIKE 'Your Table Name'

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'name_of_your_table'

SELECT c.Name 
FROM sys.columns c
JOIN sys.objects o ON o.object_id = c.object_id
WHERE o.object_id = OBJECT_ID('TABLE_NAME')
ORDER BY c.Name

SELECT name
FROM sys.columns
WHERE object_id = OBJECT_ID('TABLE_NAME')

// TABLE_NAME è la tua tabella


select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'

Questo è meglio che ottenere da sys.columns perché mostra direttamente DATA_TYPE .





tsql