저는 최근 약 2 개월 전에 NULL 값이있는 테이블의 필드를 확인해야했습니다.
이제 다른 작업을 수행하고 있지만 이번에는 테이블의 필드에 빈 문자열 값이 있는지 확인해야합니다.
쿼리 시작 :
;With xmlnamespaces('http://www.w3.org/2001/XMLSchema-instance' as ns)
SELECT *
FROM [Schema].[Table] act
where (
select act.*
for xml path('row'), elements xsinil, type
).exist('//*/@ns:nil') = 1
변경해야한다는 것을 알고 @ns:nil
있지만 TSql의 XQuery 구현에 대한 교육을받지 못했기 때문에이 초기 쿼리를 도와 줄 사람이 필요합니다. 또한 사용 및 기능에 대한 정보를 얻으려면 MSDN 외부로 이동해야합니다.
업데이트 # 1 :
;With xmlnamespaces('http://www.w3.org/2001/XMLSchema-instance' as ns)
Select *
from Schema.Table act
where (
select act.*
for xml path('row'), elements xsinil, type
).value('(//row/*)[1]', 'varchar(max)') = ''
시도했지만 필드 중 하나에 문자가 포함되어 0x001C
있으므로 바이너리, varbinary 또는 이미지로 변환 한 다음 BINARY BASE64
지시문 을 사용해야 합니다.
XML을 빌드하고 비어있는 노드 값을 확인하십시오. null을 확인하는 것보다 간단하고 주석에 명시된대로 (n) varchar 만 노드 값으로 빈 문자열을 생성합니다.
select *
from T
where (
select T.*
for xml path(''), type
).exist('*/text()[. = ""]') = 1
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다