第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

SQL:僅選擇具有NULL值的列

SQL:僅選擇具有NULL值的列

慕無忌1623718 2019-09-21 14:30:43
如何選擇表中所有行僅包含NULL值的所有列?我正在使用MS SQL Server 2005。我正在嘗試找出表中未使用的列,因此可以刪除它們。
查看完整描述

3 回答

?
守著星空守著你

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊

這是sql 2005或更高版本:用表名替換ADDR_Address。


declare @col varchar(255), @cmd varchar(max)


DECLARE getinfo cursor for

SELECT c.name FROM sys.tables t JOIN sys.columns c ON t.Object_ID = c.Object_ID

WHERE t.Name = 'ADDR_Address'


OPEN getinfo


FETCH NEXT FROM getinfo into @col


WHILE @@FETCH_STATUS = 0

BEGIN

    SELECT @cmd = 'IF NOT EXISTS (SELECT top 1 * FROM ADDR_Address WHERE [' + @col + '] IS NOT NULL) BEGIN print ''' + @col + ''' end'

    EXEC(@cmd)


    FETCH NEXT FROM getinfo into @col

END


CLOSE getinfo

DEALLOCATE getinfo


查看完整回答
反對(duì) 回復(fù) 2019-09-21
?
慕尼黑的夜晚無繁華

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊

這應(yīng)該為您提供表“ Person”中所有列只有NULL值的列表。您將獲得多個(gè)結(jié)果集的結(jié)果,這些結(jié)果集為空或包含單個(gè)列的名稱。您需要在兩個(gè)地方替換“ Person”,才能將其與另一個(gè)表一起使用。


DECLARE crs CURSOR LOCAL FAST_FORWARD FOR SELECT name FROM syscolumns WHERE id=OBJECT_ID('Person')

OPEN crs

DECLARE @name sysname

FETCH NEXT FROM crs INTO @name

WHILE @@FETCH_STATUS = 0

BEGIN

    EXEC('SELECT ''' + @name + ''' WHERE NOT EXISTS (SELECT * FROM Person WHERE ' + @name + ' IS NOT NULL)')

    FETCH NEXT FROM crs INTO @name

END

CLOSE crs

DEALLOCATE crs


查看完整回答
反對(duì) 回復(fù) 2019-09-21
?
縹緲止盈

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊

這是Bryan在2008年及以后的查詢的更新版本。它使用INFORMATION_SCHEMA.COLUMNS,為表架構(gòu)和表名稱添加變量。列數(shù)據(jù)類型已添加到輸出中。查找特定數(shù)據(jù)類型的列時(shí),包含列數(shù)據(jù)類型會(huì)有所幫助。我沒有添加列寬或其他任何內(nèi)容。


對(duì)于輸出,使用RAISERROR ... WITH NOWAIT,因此文本將立即顯示,而不是像PRINT那樣一次全部顯示(大部分)。


SET NOCOUNT ON;


DECLARE

 @ColumnName sysname

,@DataType nvarchar(128)

,@cmd nvarchar(max)

,@TableSchema nvarchar(128) = 'dbo'

,@TableName sysname = 'TableName';


DECLARE getinfo CURSOR FOR

SELECT

     c.COLUMN_NAME

    ,c.DATA_TYPE

FROM

    INFORMATION_SCHEMA.COLUMNS AS c

WHERE

    c.TABLE_SCHEMA = @TableSchema

    AND c.TABLE_NAME = @TableName;


OPEN getinfo;


FETCH NEXT FROM getinfo INTO @ColumnName, @DataType;


WHILE @@FETCH_STATUS = 0

BEGIN

    SET @cmd = N'IF NOT EXISTS (SELECT * FROM ' + @TableSchema + N'.' + @TableName + N' WHERE [' + @ColumnName + N'] IS NOT NULL) RAISERROR(''' + @ColumnName + N' (' + @DataType + N')'', 0, 0) WITH NOWAIT;';

    EXECUTE (@cmd);


    FETCH NEXT FROM getinfo INTO @ColumnName, @DataType;

END;


CLOSE getinfo;

DEALLOCATE getinfo;


查看完整回答
反對(duì) 回復(fù) 2019-09-21
  • 3 回答
  • 0 關(guān)注
  • 1147 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)