0
DECLARE @xVar XML
SET @xVar =
'<book genre="security" publicationdate="2002" ISBN="0-7356-1588-2">
<title>Writing Secure Code</title>
<author>
<firstname>Michael</firstname>
<lastname>Howard</lastname>
<age>25</age>
<birthday>2010-05-17T00:00:00</birthday>
</author>
<author>
<firstname></firstname>
<lastname>LeBlanc</lastname>
<age></age>
<birthday></birthday>
</author>
<price>39.99</price>
</book>'
SELECT nref.query('age') AS age
FROM @xVar.nodes('//author') AS authors(nref)
노드에서 실제 값을 열로 파싱하기 전에이를 어떻게 확인할 수 있습니까? 일반 테이블에 삽입 할 때이 코드는 실제로 필요한 것이 0 일 때 나이에 0을 삽입합니다. 디폴트 값은 int 또는 datetime (삽입 된 1/1/1900)과 같은 비 텍스트 데이터 유형에 삽입됩니다.전에 값을 확인하십시오.
+1 : 대신 COALESCE를 사용합니다. –
COALESCE는 (대략) ISNULL과 같으며 NULLIF가 아닌 –
NULLIF가이 문제를 해결합니다. 이것을 사용하려면 비 텍스트 열마다 비 노드 반환 값 int-0을 알아야합니다. 날짜 시간 - 01/01/1900 나는 결코 NULLIF를 고려하지 않고 순수한 xquery 솔루션에 집중했습니다. 나는 구멍에서 나를 빼앗기 때문에이 수정에 정말 만족합니다! –