2009-08-27 6 views
21

Ich habe diese CAML (lol dank Alex)SharePoint: Wie überprüft man mit einer CAML-Abfrage auf Null?

query.Query = @"<Where><Eq><FieldRef Name='MessageID' /><Value Type='Text'></Value></Eq></Where>"; 

Diese prüft, ob der Wert von MessageID = String.Empty()

Was ich für null überprüfen möchte, ist .... nicht Leerer String ...

Ist dies mit CAML möglich?

+6

eine SQL-ähnliche Abfragesprache in XML-Wrapping: ein Geniestreich, oder reine Bosheit? Du entscheidest. – Juliet

+1

10 Es würde funktionieren, wenn es SQL wäre ... aber es ist ein weiterer funky (gebrochen) Aspekt von SharePoint. SharePoint nie Enttäuschungen ... –

+1

Auch Sie müssen Microsofts Dokumentation lieben - http://msdn.microsoft.com/en-us/library/dd588322%28office.11%29.aspx - erklärt alles andere außer wie isnull zu verwenden. ... –

Antwort

46

CAML hat die IsNull-Operator, so die Abfrage wäre:

query.Query = @"<Where><IsNull><FieldRef Name='MessageID' /></IsNull></Where>" 
+1

Wie um alles in der Welt kennen Sie diese Art von Ding? :) aber danke! –

+0

Lol - das einzige Problem ist, dass es nicht funktioniert :) –

+0

Wie funktioniert es nicht? Sie könnten versuchen, eine Oder-Anweisung zu verwenden, nach leeren AND NULL-Werten zu suchen? – Colin

21

ein Äquivalent zu String.IsNullOrEmpty(Description) benötigt. Landete mit diesem:

<And> 
    <IsNotNull> 
    <FieldRef Name='Description' /> 
    </IsNotNull> 
    <Neq> 
    <FieldRef Name='Description' /> 
    <Value Type='Text'></Value> 
    </Neq> 
</And> 
+3

beachten Sie, dass es IsNullOrEmpty negiert wird, bevor Sie kopieren und einfügen;) –

7

Vereinbaren Sie mit Colin und häufiger verwendeten Zustand sind, wie folgend:

1. Null: 
<Where><IsNull><FieldRef Name="CustomField" /></IsNull></Where> 
2. Not Null: 
<Where><IsNotNull><FieldRef Name="CustomField" /></IsNotNull></Where> 
3. Equal: 
<Where><Eq><FieldRef Name="CustomField" /><Value Type="Text">MatchValue</Value></Eq></Where> 
4. Not Equal: 
<Where><Neq><FieldRef Name="CustomField" /><Value Type="Text">MatchValue</Value></Neq></Where> 
5. Greater Than: 
<Where><Gt><FieldRef Name="CustomField" /><Value Type="Text">1</Value></Gt></Where> 
6. Greater Than And Equal: 
<Where><Geq><FieldRef Name="CustomField" /><Value Type="Text">1</Value></Geq></Where> 
7. Lower Than: 
<Where><Lt><FieldRef Name="CustomField" /><Value Type="Text">1</Value></Lt></Where> 
8. Lower Than And Equal: 
<Where><Leq><FieldRef Name="CustomField" /><Value Type="Text">1</Value></Leq></Where> 
9 Begin With: 
<Where><BeginsWith><FieldRef Name="CustomField" /><Value Type="Text">StartString</Value></BeginsWith></Where> 
10: Contains: 
<Where><Contains><FieldRef Name="CustomField" /><Value Type="Text">ContainString</Value></Contains></Where> 

Hinweis: Weitere Informationen finden Sie unter: http://msdn.microsoft.com/en-us/library/ms467521.aspx Es ist die voll CAML-Abfrage-Schema .

Hope this kann Ihnen helfen ~

Verwandte Themen