我一直在尋找同樣的,我不認爲這是可能的。
唯一體面的解決辦法似乎是他們的名字,從Bytes.com:
SELECT
CASE WHEN patientid IS NULL THEN 1 ELSE 0 END+
CASE WHEN age IS NULL THEN 1 ELSE 0 END+
CASE WHEN weight IS NULL THEN 1 ELSE 0 END+
CASE WHEN height IS NULL THEN 1 ELSE 0 END+
CASE WHEN race IS NULL THEN 1 ELSE 0 END
FROM tblPatientDemographics
當然,這不好玩,所以我寫了一些動態SQL爲我做到這一點。幾乎沒有優雅,但我不確定有更好的方法。
DECLARE @tableName SYSNAME
DECLARE @sql VARCHAR(MAX)
DECLARE @sqltail VARCHAR(MAX)
-- loop through all the fields in a table.
DECLARE @colName SYSNAME
SET @tableName = 'YourTableName'
DECLARE crsCol CURSOR FORWARD_ONLY READ_ONLY
FOR
SELECT name
FROM syscolumns
WHERE id = OBJECT_ID(@tableName)
ORDER BY colid
OPEN crsCol
SET @sql = ''
SET @sqltail = 'FROM [' + @tableName + ']'
FETCH NEXT FROM crsCol INTO @colName
WHILE @@FETCH_STATUS = 0
BEGIN
IF @sql = ''
SET @sql = 'SELECT /* Add Your PK Fields here, */ NullCount = '
ELSE
SET @sql = @sql + '+ '
SET @sql = @sql + 'CASE WHEN [' + @colName + '] IS NULL THEN 1 ELSE 0 END '
FETCH NEXT FROM crsCol INTO @colName
END
CLOSE crsCol
DEALLOCATE crsCol
PRINT (@sql + @sqltail)
EXEC(@sql + @sqltail)
您正在使用哪種數據庫系統? MySQL,SQL Server,Oracle? – 2010-04-22 08:19:47
你在那張桌子上有一個主鍵嗎? – 2010-04-22 14:50:30
[一般觀察]帶有圓柱的桌子爲我提供警鐘。 – 2010-04-25 12:48:51