【问题标题】:Is there a way to select nth column in a SELECT clause from a table/view有没有办法从表/视图中选择 SELECT 子句中的第 n 列
【发布时间】:2010-05-04 20:20:17
【问题描述】:

我有这个包含数百列的 GIGANTIC 视图,我需要选择第 114 列,例如:

SELECT "144" FROM MyView;

PS:显然,我不知道该列的名称。我刚刚将结果行复制到 Excel 文件中,搜索了 EJ 列中的特定值,因此我想选择在我的视图中仅显示第 n 列的所有行以进行进一步调试。

干杯!

【问题讨论】:

  • 这是什么数据库?微软SQL? MySQL?使用权? ...

标签: sql sql-server-2005


【解决方案1】:

如果您使用的是 MS SQL Server,则可以

sp_help ViewName

然后滚动到 Column_name 结果集中的第 144 列以查看该列的名称。

此外,您可以在 SQL Server Management Studio 的结果窗格中选择“使用标题复制”,然后将结果集粘贴到 Excel 中并保持标题(列名)不变。

【讨论】:

  • 谢谢,这符合我的目的。只要允许我接受这些答案(5 分钟内),我就会接受。
【解决方案2】:

我建议根据 Excel 列名给所有列名。应该有一个 excel 解决方案来使第一行等于列名(即 AA、BB 等)。然后进行导入,然后根据应该是可计算的列名进行选择。

【讨论】:

    【解决方案3】:

    您可以在通用存储过程中使用以下内容,在其中传入列名、表名和 n 的值。这将适用于 MSSQL 2000 - 2008。

    CREATE PROC usp_select_Nth 
    (
        @table_name sysname,
        @column_name sysname,
        @nth int
    )
    AS
    BEGIN
    
    SET @exec = 'SELECT MAX(' + @column_name + ') from ' + @table_name + ' WHERE ' + @column_name + ' NOT IN ( SELECT TOP ' + LTRIM(STR(@nth - 1)) + ' ' + @column_name + ' FROM ' + @table_name + ' ORDER BY ' + @column_name + ' DESC )'
    EXEC (@exec)
    
    END
    

    【讨论】:

    • 谢谢多尔夫。我总是忘记用于发布的代码 sn-p 功能。
    • 重点是我不知道列名。还是谢谢
    【解决方案4】:

    我遇到了同样的问题,并通过这段代码解决了它。 在存储过程中使用它

    DECLARE @TableName as nVarchar(100);
    DECLARE @NthColumn as Int
    
    --we are fetching 1st column here.
    
    SELECT 
    
    @TableName =N'YOURTABLE',
    @NthColumn=1 --Change if necessary
    
    DECLARE @ColumnName as varchar(100);
    SELECT @ColumnName = Col_name(object_id(@TableName),@NthColumn); 
    
    EXEC ('SELECT ' + @ColumnName + ' FROM ' + @TableName);
    

    【讨论】:

      【解决方案5】:

      不,您不能使用标准 SQL 或 Oracle 按索引进行选择。

      但是,其他数据库供应商可能有自己的专有命令来执行此操作。

      【讨论】:

        猜你喜欢
        • 2012-10-06
        • 2013-07-12
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多