الخميس، 5 مارس 2009

نظرة على لغة الاستعلام CAML Overview - 3


تشكل عبارات عمليات المقارنة الجزء الأكبر من عبارات لغة الاستعلام CAML Query والجزء التالي سيركز على شرح كافة هذه العبارات:

عبارة BeginsWith

تستخدم هذه العبارة للبحث عن قيمة نصية في بداية قيمة حقل نصي ويتم استخدام هذه العبارة ضمن عبارة Where مباشرة أو ضمن عبارة And أو عبارة Or:



<Query>
<Where>
<BeginWith>
<FieldRef Name="Title" />
<Value Type="Text">Person</Value>
</BeginWith>
</Where>
</Query>


العبارة السابقة تبحث عن كل العناصر التي يبدأ حقل العنوان Title بـ Person, ويتم استخدام العبارة BeginWith بنفس الطريقة في حال استخدام العبارة And أو العبارة Or.

عبارة Contains

تتشابه عبارة Contains مع عبارة BeginsWith في أنها تطبق على الحقول النصية والاختلاف هو أنها تبحث عن سلسلة نصية في جزء من أجزاء قيمة الحقل النصي أي ليس من الضروري أن تظهر السلسلة النصية في بداية قيمة الحقل, ويتم استخدام هذه العبارة ضمن عبارة Where مباشرة أو ضمن عبارة And أو عبارة Or:



<Query>
<Where>
<And>
<BeginsWith>
<FieldRef Name="Title" />
<Value Type="Text">Person</Value>
</BeginsWith>
<Contains>
<FieldRef Name="Description" />
<Value Type="Note">Ahmed</Value>
</Contains
</And>
</Where>
</Query>


المثال السابق يدمج بين العبارتين BeginsWith و Contains ضمن عبارة And, وبنفس الطريقة يمكن استخدام العبارة Contains مع عبارة Or أو حتى بشكل مباشر ضمن عبارة Where.

عبارة Eq

العبارة Eq هي اختصار للكلمة Equal وتستخدم للتأكد من أن قيمة حقل ما تساوي قيمة محددة سواء نصية أو رقمية أو حتى تاريخ ووقت أو أي قيمة أخرى. ويمكين استخدامها ضمن العبارة And أو العبارة Or أو مباشرة ضمن العبارة Where:



<Query>
<Where>
<Eq>
<FieldRef Name="Status" />
<Value Type="Text">Completed</Value>
</Eq>
</Where>
</Query>


طبعاً المثال السابق من السهل قراءته والذي يشتطر أن تكون قيمة الحقل Status تساوي القيمة Completed ليظهر عنصر القائمة في نتائج الاستعلام.

عبارة Neq

عبارة Neq هي اختصار لـ Not Equal والتي تفيد في التأكد من قيمة حقل ما لا تساوي قيمة معينة, نصية أو رمقية أو حتى تاريخ ووقت أو أي قيمة أخرى وهي بعكس العبارة Eq, وطريقة استخدامها مشابهة تماماً للعبارة Eq حيث يمكن استخدامها ضمن العبارة And أو العبارة Or أو مباشرة ضمن عبارة Where.



<Query>
<Where>
<Neq>
<FieldRef Name="Status" />
<Value Type="Text">Completed</Value>
</Neq>
</Where>
</Query>


عبارة Gt

عبارة Gt هي اختصار لـ Greater Than (أكبر تماماً من) وهي معامل رياضي تستخدم لمقارنة قيمة حقل ما مع قيمة من النوع الرقمي أو تاريخ أو وقت وطبعاً يمكن استخدام العبارة Gt ضمن عبارة And أو عبارة Or أو حتى ضمن عبارة Where مباشرة:


<Query>
<Where>
<Gt>
<FieldRef Name="DeadLine" />
<Value Type="DateTime><Today /></Value>
</Gt>
</Where>
</Query>


المثال السابق يقارن قيمة الحقل DeadLine وهو من النوع DateTime مع تاريخ اليوم الذي عُبر عنه باستخدام قيمة معرفة سابقاً ضمن لغة الاستعلام CAML وهذه القيمة هي عندها تظهر العناصر التي تكون فيها قيمة الحقل DeadLine أكبر تماماً من تاريخ اليوم.

عبارة Geq

عبارة Geq هي اختصار لـ Greater Than or Equal (أكبر أو يساوي) وهذه العبارة مشابهة تماماً للعبارة Gt في كيفية استخدامها, حيث يمكن استخدام العبارة Geq ضمن عبارة And أو عبارة Or أو حتى ضمن عبارة Where مباشرة:



<Query>
<Where>
<Geq>
<FieldRef Name="DeadLine" />
<Value Type="DateTime><Today /></Value>
</Geq>
</Where>
</Query>


عبارة Lt
عبارة Lt هي اختصار لـ Less Than (أصغر تماماً من) وهي معامل رياضي تستخدم لمقارنة قيمة حقل ما مع قيمة من النوع الرقمي أو تاريخ أو وقت وطبعاً يمكن استخدام العبارة Lt ضمن عبارة And أو عبارة Or أو حتى ضمن عبارة Where مباشرة:

<Query>
<Where>
<Lt>
<FieldRef Name="DeadLine" />
<Value Type="DateTime><Today /></Value>
</Lt>
</Where>
</Query>


المثال السابق يقارن قيمة الحقل DeadLine وهو من النوع DateTime مع تاريخ اليوم الذي عُبر عنه باستخدام قيمة معرفة سابقاً ضمن لغة الاستعلام CAML وهذه القيمة هي عندها تظهر العناصر التي تكون فيها قيمة الحقل DeadLine أصغر تماماً من تاريخ اليوم.

عبارة Leq
عبارة Leq هي اختصار لـ Less Than or Equal (أصغر أو يساوي) وهذه العبارة مشابهة تماماً للعبارة Lt في كيفية استخدامها, حيث يمكن استخدام العبارة Leq ضمن عبارة And أو عبارة Or أو حتى ضمن عبارة Where مباشرة:

<Query>
<Where>
<Leq>
<FieldRef Name="DeadLine" />
<Value Type="DateTime><Today /></Value>
</Leq>
</Where>
</Query>

عبارة IsNotNull
تستخدم عبارة IsNotNull لاستخراج العناصر التي يكون فيها الحقل المستهدف لا يحتوي على قيمة خالية, ويمكن استخدام عبارة IsNotNull ضمن عبارة And أو عبارة Or أو مباشرة ضمن عبارة Where:

<Query>
<Where>
<IsNotNull>
<FieldRef Name="DeadLine" />
</IsNotNull >
</Where>
</Query>

ونلاحظ أن العبارة IsNotNull لا تتطلب وجود العبارة Value بعد العبارة FieldRef.

عبارة IsNull
تستخدم عبارة IsNull لاستخراج العناصر التي يكون فيها الحقل المستهدف يحتوي على قيمة خالية, ويمكن استخدام عبارة IsNull ضمن عبارة And أو عبارة Or أو مباشرة ضمن عبارة Where:

<Query>
<Where>
<IsNull>
<FieldRef Name="DeadLine" />
</IsNull >
</Where>
</Query>

ونلاحظ أن العبارة IsNull لا تتطلب وجود العبارة Value بعد العبارة FieldRef.

هناك تعليق واحد: