【问题标题】:Select all none null values from all columns in a table从表中的所有列中选择所有非空值
【发布时间】:2015-06-23 01:40:21
【问题描述】:

我在逐列遍历并获取每列中所有非空值的计数时遇到问题。我认为问题是我如何获取列名。在我试图选择每列中的所有值的最后一个选择语句中,我只是获得与行数一样多的列名。关于如何解决这个问题的任何想法?

DECLARE @cnt INT = 1;

WHILE @cnt < (SELECT COUNT(*)
                FROM mySchema.INFORMATION_SCHEMA.COLUMNS
                WHERE table_name = 'tblName') + 1
BEGIN
    DECLARE @column varchar(9) = (select column_name
    FROM mySchema.INFORMATION_SCHEMA.COLUMNS
    WHERE table_name = 'tblName'
    AND ordinal_position = @cnt);

    SELECT @column 
        FROM [mySchema].[dbo].[tblName]
        WHERE @column is not null
        AND @column <> ''

        SET @cnt = @cnt + 1;
    END;

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    select @variable 只会返回一个变量值。我相信你需要使用一些动态 SQL。也许像 exec('select ' + @colname + ' from ' etc) 这样的东西对你有用(至少它可以在 MS SQL 服务器中工作)。

    【讨论】:

    • 这很完美,谢谢。让 Exec 工作的好方法。
    【解决方案2】:

    不是很确定,为什么不能直接点赞

    SELECT column1, column2,column3
        FROM [mySchema].[dbo].[tblName]
        WHERE column1 is not null
        AND column2 is not null
        AND column3 is not null
    

    【讨论】:

    • 我正在尝试编写一个用于任何表的 sql 脚本,这就是我试图省略列名的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 2011-11-07
    • 1970-01-01
    • 2011-01-14
    相关资源
    最近更新 更多