【发布时间】:2016-07-15 16:29:19
【问题描述】:
我正在浏览具有几列的数据库表。我试图并排查看具有 smalldatetime 数据类型的列以进行比较。
那么有没有一种方法/查询可以访问表中具有相同数据类型的列一起显示?
我正在开发 SQL Server 2008。
【问题讨论】:
-
不知道你在这里问什么。您是否只想从具有特定数据类型的表中选择列?您可以查询 sys.columns 以确定数据类型。
我正在浏览具有几列的数据库表。我试图并排查看具有 smalldatetime 数据类型的列以进行比较。
那么有没有一种方法/查询可以访问表中具有相同数据类型的列一起显示?
我正在开发 SQL Server 2008。
【问题讨论】:
检查一下:
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
您不能直接使用它,但可以从那里构建动态 SQL:
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 TABLE_SCHEMA=@sch
AND TABLE_NAME=@tbl
AND DATA_TYPE=@tp
FOR XML PATH('')
),1,1,''
)
);
DECLARE @cmd VARCHAR(MAX)=
'SELECT ' + @cols + ' FROM ' + @sch + '.' + @tbl;
EXEC(@cmd);
【讨论】:
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'
【讨论】: