мне было интересно, если кто-то может помочьSQL Server 2008 - Измельчение XML в таблицах должны иметь Неизвестное значение DATE, как NULL
Я успешно был в состоянии импортировать документ XML в таблицу с типом данных XML в SQL Server2008, как всегда, когда я пытаюсь и отбрасываю эту таблицу в промежуточную таблицу, любые значения DATE без введенной даты вставляются в промежуточную таблицу как 1900-01-01.
Есть ли способ clever, который я пропускаю, чтобы остановить его, и просто вставьте 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
Не могли бы вы предоставить сокращенную версию XML? –
HI Martin, я добавил пример XML. Большое спасибо за то, что нашли время посмотреть. – Pixelated