2014-05-14 71 views
0

我從特定的lastModified屬性中檢索jcr中的一組節點。 但是對於某些節點,它沒有lastModified屬性,在這種情況下,我的查詢必須查找jcr:createdDate。 它將如何實現? 這是我的查詢如何檢查jcr節點是否有屬性?

SELECT * FROM [nt:base] AS s WHERE [cq:lastModified] > CAST('2014-05-08T17:36:00.400+05:30' AS DATE) 

感謝

回答

1

我認爲使用OR條件應該爲你的情況下工作,因爲其上次更改時間不超過指定日期更大的顯然不會有createdDate大於節點它。

而如果上次更改不存在,它會檢查該createdDate和產生的結果也相應

SELECT * FROM [nt:base] AS s 
WHERE [cq:lastModified] > CAST('2014-05-08T17:36:00.400+05:30' AS DATE) 
OR [jcr:created] > CAST('2014-05-08T17:36:00.400+05:30' AS DATE) 
1

測試的屬性沒有looks like that

[cq:lastModified] IS NULL 

您的查詢可以改寫到:

SELECT * 
FROM [nt:base] AS s 
WHERE 
    [cq:lastModified] > CAST('2014-05-08T17:36:00.400+05:30' AS DATE) 
    OR ([cq:lastModified] IS NULL 
     AND 
     [jcr:created] > CAST('2014-05-08T17:36:00.400+05:30' AS DATE)) 
+0

難道你不覺得對NULL的檢查是unnec essary和查詢將返回相同的結果沒有那麼多? – rakhi4110

+0

在這種特殊情況下,這是真的,但sridhar問如何檢查給定的財產是否沒有價值。在其他情況下,當我們沒有像'jcr:created'這樣的第二個「助手*屬性」時,這個答案可能會有用。 –

+0

同意。謝謝。 – rakhi4110