我希望在我的小组获得的一组新数据上设置一组数据质量脚本。我想要跟踪的一个问题是维护包含nulls
的字段列表。有些字段没有问题,有些字段没有,但我们不想阻止bulk insert
,因为我们不允许某些字段null
。
示例:
SELECT [columns]
FROM [TABLE] T
WHERE [columns] CONTAINS NULLS
答案 0 :(得分:2)
你可以在函数中使用这样的东西来循环遍历所有列,并查看表中是否有空值的计数。代码是一种蛮力,但它会起作用。
test6.txt
答案 1 :(得分:2)
这是缓慢而丑陋的,但是如果没有从RedGate(等人)购买工具,您可以使用ISNULL(@ column,'PICK ME')来修改它以搜索您的空值...
DECLARE @Query NVARCHAR(MAX), @Column NVARCHAR(100), @Table NVARCHAR(100)
DECLARE @Search NVARCHAR(100)
SET @Search = 'PICK ME'
IF OBJECT_ID('tempdb.dbo.#Results2','U') IS NOT NULL
DROP TABLE tempdb.dbo.#Results2
CREATE TABLE #Results2(Table_Name VARCHAR(100), Column_Name VARCHAR(100))
DECLARE Col CURSOR FOR
SELECT Table_Name, Column_Name
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLLATION_NAME IS NOT NULL
ORDER BY TABLE_NAME, ORDINAL_POSITION
OPEN Col
FETCH NEXT FROM Col INTO @Table, @Column
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Query = 'IF EXISTS (SELECT * FROM '+QUOTENAME(@Table)+' WHERE '+QUOTENAME(@Column)+'='''+@Search+''')
SELECT '''+@Table+''','''+@Column+''''
INSERT INTO #Results2
EXEC sp_executesql @Query
FETCH NEXT FROM Col INTO @Table, @Column
END
CLOSE Col
DEALLOCATE Col
SELECT * FROM #Results2