【问题标题】:Can I display only columns of a Table of a Particular Data Type in SQL Server?我可以在 SQL Server 中仅显示特定数据类型的表的列吗?
【发布时间】:2016-07-15 16:29:19
【问题描述】:

我正在浏览具有几列的数据库表。我试图并排查看具有 smalldatetime 数据类型的列以进行比较。

那么有没有一种方法/查询可以访问表中具有相同数据类型的列一起显示?

我正在开发 SQL Server 2008。

【问题讨论】:

  • 不知道你在这里问什么。您是否只想从具有特定数据类型的表中选择列?您可以查询 sys.columns 以确定数据类型。

标签: sql-server sqldatatypes


【解决方案1】:

检查一下:

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);

【讨论】:

    【解决方案2】:
    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'  
    

    【讨论】:

      猜你喜欢
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 2015-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多