Мне было интересно, может ли кто-нибудь помочь
Я успешно смог импортировать XML-документ в таблицу с типом данных XML в SQL Server2008, хотя когда я пытаюсь и уничтожаю эту таблицу вВ промежуточной таблице любые значения DATE без введенной даты вставляются в промежуточную таблицу как 1900-01-01.
Есть ли какой-то умный способ, который я пропускаю, чтобы остановить его, делая это и просто вставляя вместо него NULL.Я мог бы использовать NULLIF в промежуточной таблице и заменить 1900-01-01 на ноль, но я не хотел бы делать это в случае, если есть подлинные значения 1900-01-01.
Мой код выглядит примерно так
SELECT tab.col.value('LastDate[1]','DATE') LastARD'
FROM import.XMLCompanyDetail
CROSS APPLY
xmldata.nodes('//VN/CompanyList/Row') AS tab(col)
Большое спасибо
Пожалуйста, смотрите ниже пример XML, который я импортирую
<?xml version="1.0" encoding="ISO-8859-1" ?>
<VN>
<CompanyList>
<Row num="1"><CoNum>7878</CoNum><CoName>ExampleName</CoName><DInc>1978-12-30</DInc><DDis></DDis></Row>
</CompanyList>
</VN>
ДатаDDIS должен быть NULL, но вместо этого при импорте в мою промежуточную таблицу вместо него вставляется 1901-01-01.
обновленный код, чтобы показать, что я имею в виду
create table staging_table
(DInc DATE NULL, LastARD DATE NULL);
with XMLCompanyDetail as
(
SELECT CAST('<?xml version="1.0" encoding="ISO-8859-1" ?>
<VN>
<CompanyList>
<Row num="1"><CoNum>7878</CoNum><CoName>ExampleName</CoName><DInc>1978-12-30</DInc><DDis></DDis></Row>
</CompanyList>
</VN>
' AS XML) AS xmldata
)
INSERT INTO Staging_Table
SELECT tab.col.value('DInc[1]','DATE') DInc,
tab.col.value('DDis[1]','DATE') LastARD
FROM XMLCompanyDetail
CROSS APPLY
xmldata.nodes('//VN/CompanyList/Row') AS tab(col)
SELECT * FROM Staging_table
drop table staging_table