2014-02-15 6 views
2

Как вставить значение null из строки XML в базу данных.Вставить значение NULL из xml в базу данных

Когда я вставляю, тогда поле DOB вставлено '1900-01-01 00: 00: 00.000' и поле Gender ''. Я хочу вставить значение NULL в этот столбец. Пожалуйста, помогите мне.

<Child> 
    <EnrolmentNo>01113702010</EnrolmentNo> 
    <Name>Ankush</Name> 
    <DOB></DOB> 
    <Email>[email protected]</Email> 
    <Gender></Gender> 
    <Phone>9990234323, 9452344321</Phone> 
    <RegistrationDate>2013-11-12T00:00:00</RegistrationDate> 
    <ValidUpto>2014-12-12T00:00:00</ValidUpto> 
</Child> 

@Input XML 
INSERT INTO KP_StudentsTemp 
( 
[EnrolmentNo],[SessionId],[BatchId],[SemesterId], 
[FirstName],[MiddleName],[LastName],[DOB],[Email],[Gender],[Phone], 
[RegistrationDate],[ValidUpto] 
) 
SELECT (XNodes.value('(EnrolmentNo)[1]','varchar(32)')), 
XNodes.value('(Name)[1]','varchar(32)'), 
XNodes.value('(DOB)[1]','datetime'), 
XNodes.value('(Email)[1]','varchar(256)'),  
XNodes.value('(Gender)[1]','char(1)'), 
XNodes.value('(Phone)[1]','varchar(64)'), 
XNodes.value('(RegistrationDate)[1]','datetime'), 
XNodes.value('(ValidUpto)[1]','datetime') 
FROM @input.nodes('/Main/Child') AS XTbl(XNodes) 

ответ

1

вы можете использовать NULLIF функция

@Input XML 
INSERT INTO KP_StudentsTemp 
( 
[EnrolmentNo],[SessionId],[BatchId],[SemesterId], 
[FirstName],[MiddleName],[LastName],[DOB],[Email],[Gender],[Phone], 
[RegistrationDate],[ValidUpto] 
) 
SELECT (
XNodes.value('(EnrolmentNo)[1]','varchar(32)')), 
XNodes.value('(Name)[1]','varchar(32)'), 
NULLIF(XNodes.value('(DOB)[1]','datetime'),'1900-01-01 00:00:00.000'), 
XNodes.value('(Email)[1]','varchar(256)'),  
NULLIF(XNodes.value('(Gender)[1]','char(1)'),''), 
XNodes.value('(Phone)[1]','varchar(64)'), 
XNodes.value('(RegistrationDate)[1]','datetime'), 
XNodes.value('(ValidUpto)[1]','datetime') 
FROM @input.nodes('/Main/Child') AS XTbl(XNodes) 

NULLIF

Смежные вопросы