[SQL] 모든 칼럼에 null 값 (들)의 모든 행을 찾기
SQL모든 칼럼에 null 값 (들)의 모든 행을 찾기
나는 모든하지만, 1 열에서 NULL 값이있는 모든 행을 반환하는 쿼리를 만들려고 해요. 일부 행은 하나 이상의 널 (null) 입력 어딘가에있을 것이다. 내가 제외 할 것 하나 열이 때문에 모든 항목의 시간이 순간에,있다가 null이며,이 널 (null) 값을 가질 수있는 유일한 열입니다. 나는 어디에서 모든 열을 포함하는 방법을 모르기 때문에 나는 붙어입니다.
SELECT *
FROM Analytics
WHERE * IS NULL
또한, 나는 1 열의 수를 할 수 있지만 테이블은 67 개 컬럼에 대해이있다.
SELECT COUNT(*)
FROM Analytics
WHERE P_Id IS NULL
해결법
-
==============================
1.SQL 서버에서는이 답변에서 아이디어를 빌릴 수
SQL 서버에서는이 답변에서 아이디어를 빌릴 수
;WITH XMLNAMESPACES('http://www.w3.org/2001/XMLSchema-instance' as ns) SELECT * FROM Analytics WHERE (SELECT Analytics.* FOR xml path('row'), elements xsinil, type ).value('count(//*[local-name() != "colToIgnore"]/@ns:nil)', 'int') > 0
SQL 바이올린
가능성이 더 효율적입니다 67 열이있는 쿼리를 작성하지만, 동적 SQL이 발생하는 것은 타이핑이나 필요를 절약 할 수 있습니다.
-
==============================
2.사용중인 RDBMS에 따라, 나는 동적 SQL을 사용하는 것 (명시 적으로 COL1가 null로, COL2가 NULL IS와 COL3이 ... NULL IS WHERE 말하는 것이 아니라) 유일한 옵션 생각합니다.
사용중인 RDBMS에 따라, 나는 동적 SQL을 사용하는 것 (명시 적으로 COL1가 null로, COL2가 NULL IS와 COL3이 ... NULL IS WHERE 말하는 것이 아니라) 유일한 옵션 생각합니다.
당신은 SQL Server 데이터베이스에서 모든 열 이름을 얻으려면 예를 들어, 당신은 그 이름을 반환하기 위해이 같은 것을 사용할 수 있습니다 :
SELECT name FROM sys.columns WHERE object_id = OBJECT_ID('DB.Schema.Table')
당신은 당신의 WHERE 절을 만들 FOR XML을 사용할 수 있습니다 :
SELECT Name + ' IS NULL AND ' AS [text()] FROM sys.columns c1 WHERE object_id = OBJECT_ID('DB.Schema.Table') ORDER BY Name FOR XML PATH('')
이것은 당신이 시작하는 데 도움이되기를 바랍니다.
행운을 빕니다.
-
==============================
3.나는이 가정, 테스트에 이러한 테이블이없는에는 'X'모든 필드의 데이터가, 나는 이것이 SQL-서버에서 작동합니다 생각하는,하지 (데모)
나는이 가정, 테스트에 이러한 테이블이없는에는 'X'모든 필드의 데이터가, 나는 이것이 SQL-서버에서 작동합니다 생각하는,하지 (데모)
참고 :! 내가 c.name로 keyColumn을 필터링 한 = 'keyColumn'
DECLARE @S NVARCHAR(max), @Columns VARCHAR(50), @Table VARCHAR(50) SELECT @Columns = '66', --Number of cols without keyColumn @Table = 'myTable' SELECT @S = ISNULL(@S+'+ ','') + 'isnull(convert(nvarchar, ' + c.name + '),''x'')' FROM sys.all_columns c WHERE c.object_id = OBJECT_ID(@Table) AND c.name != 'keyColumn' exec('select * from '+@Table+' where ' + @S + '= replicate(''x'',' + @Columns + ')')
from https://stackoverflow.com/questions/14488859/find-all-rows-with-null-values-in-any-column by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 기본 키가없는 경우 중복 레코드가 SqlBulkCopy의 삽입되지 않도록하는 방법 (0) | 2020.07.05 |
---|---|
[SQL] C #에서 SQL을 대량 복사 / 삽입 (0) | 2020.07.05 |
[SQL] 업데이트 트리거 후 SQL 서버 (0) | 2020.07.05 |
[SQL] PostgreSQL의 SERIAL 작업 다르게합니까? (0) | 2020.07.05 |
[SQL] 인서트 문자열은 사용자 생성 된 변수에있을 때 SQL 삽입에 대한 작은 따옴표를 ... 탈출하는 방법 (0) | 2020.07.05 |