2016-07-15 31 views
0

Ich gehe durch Datenbanktabellen mit mehreren Spalten. Ich habe versucht, Spalten mit einem Smalldatetime-Datentyp nebeneinander zum Vergleich anzuzeigen.Kann ich nur Spalten einer Tabelle eines bestimmten Datentyps in SQL Server anzeigen?

Also gibt es einen Weg/eine Abfrage, in der ich auf die Spalten einer Tabelle zugreifen kann, die den gleichen Datentyp zusammen angezeigt haben?

Am Arbeits auf SQL Server 2008.

+2

Nicht sicher, was du hier fragst. Möchten Sie nur Spalten aus einer Tabelle auswählen, die einen bestimmten Datentyp haben? Sie können sys.columns abfragen, um den Datentyp zu ermitteln. –

Antwort

0
SELECT 
    t.name, 
    o.name AS TableName, 
    c.* 
FROM 
    sys.columns c 
JOIN 
    sys.types t ON t.user_type_id = c.user_type_id 
JOIN 
    sys.objects o ON o.object_id = c.object_id 
WHERE 
    t.name='smalldatetime' 
0

prüfen dies:

SELECT * FROM INFORMATION_SCHEMA.COLUMNS 

Sie können dies nicht direkt verwenden, aber Sie können von dort dynamische SQL bauen:

DECLARE @sch VARCHAR(100)='dbo'; --or other schema 
DECLARE @tbl VARCHAR(100)='YourTableName'; 
DECLARE @tp VARCHAR(100)='INT' --or other type 

DECLARE @cols VARCHAR(MAX)= 
(
    STUFF(
     (
     SELECT ',' + COLUMN_NAME 
     FROM INFORMATION_SCHEMA.COLUMNS 
     WHERE [email protected] 
      AND [email protected] 
      AND [email protected] 
     FOR XML PATH('') 
     ),1,1,'' 
    ) 
); 
DECLARE @cmd VARCHAR(MAX)= 
'SELECT ' + @cols + ' FROM ' + @sch + '.' + @tbl; 

EXEC(@cmd);