2011-12-08 21 views
3

我正在研究切碎XML文檔的存儲過程。正在處理的記錄中的一個子元素有時可以用xsi:nil="true"屬性標記。其他時候,它可以包含一個dateTime。我試圖插入一個字符串到我的表的列中,這取決於這個元素是否有一個值。例如:檢查XML元素是否在SQL中用`xsi:nil`標記

[Status] = CASE WHEN (Rt.Item.value('(./Date)[1]', 'nvarchar(max)') = '') THEN N'SUBMITTED' ELSE N'PROCESSED' END 

不幸的是,這似乎不工作。什麼是正確的檢查一個元素是否在SQL Server中有一個值?

+0

你問關於存在嗎? http://msdn.microsoft.com/en-us/library/ms189869.aspx –

+0

我不*認爲*如此。元素總是存在,但有時它具有'xsi:nil =「true」'屬性,而其他時候它有一個值。 –

回答

5

一般

theElementName[not(@xsi:nil eq 'true')]/any/other/needed/location/steps 

如果"xsi"前綴,以適當的名稱空間的關聯未註冊(要做到這一點的方法是實現特定的,你需要檢查這是怎麼成爲完成你的情況),仍然可以使用:

theElementName[not(@*[name() eq 'xsi:nil'] eq 'true')] 
相關問題