学习:WSS/MOSS中的查询构造(转)

    先来看看查询的元素:
  
Query
    Where
        Logical Joins
        And
            [Logical Joins]
            [Comparison Operators]
        Or
            [Logical Joins]
            [Comparison Operators]
        Comparison Operators
        BeginsWith
            FieldRef
            Value
            XML
        Contains
            FieldRef
            Value
            XML
        Eq
            FieldRef
            Value
            XML
        Geq
            FieldRef
            Value
            XML
        Gt
            FieldRef
            Value
            XML
        Leq
            FieldRef
            Value
            XML
        Lt
            FieldRef
            Value
            XML
        Neq
              FieldRef
              Value
              XML
        DateRangesOverlap
            FieldRef
            Value
        IsNotNull
            FieldRef
        IsNull
            FieldRef
    Order/Group Operators
    OrderBy
        FieldRef
    GroupBy
        FieldRef


    但是,单单看这个很难理解,尤其是Where的构造。说起来好像比较麻烦,举个例子,就清楚了:
  
<And>
  <And>
    <Eq>
      <FieldRef Name="ProductID"/>
      <Value Type="Text">J1539</Value>
    </Eq>
    <Eq>
      <FieldRef Name="ProductID"/>
      <Value Type="Text">J9862</Value>
    </Eq>
  </And>
  <Or>
    <Eq>
      <FieldRef Name="ProductID"/>
      <Value Type="Text">J0394</Value>
    </Eq>
    <Eq>
      <FieldRef Name="ProductID"/>
      <Value Type="Text">J4589</Value>
    </Eq>
  </Or>
</And>


    上面的代码描述:(ProductID = J1539 AND ProductID = J9862) AND (ProductID = J0394 OR ProductID = J4589)。

    但是,今天却发现,在构造查询时,如果最后多了结束符,却不会影响结果(不起作用),也不会报错。


<And>
  <And>
    <Eq>
      <FieldRef Name="ProductID"/>
      <Value Type="Text">J1539</Value>
    </Eq>
    <Eq>
      <FieldRef Name="ProductID"/>
      <Value Type="Text">J9862</Value>
    </Eq>
  </And>
  <Or>
    <Eq>
      <FieldRef Name="ProductID"/>
      <Value Type="Text">J0394</Value>
    </Eq>
    <Eq>
      <FieldRef Name="ProductID"/>
      <Value Type="Text">J4589</Value>
    </Eq>
  </Or>
</And>
    <Eq>
      <FieldRef Name="ProductID"/>
      <Value Type="Text">J4590</Value>
    </Eq>
</And>

  

    蓝色部分是之前的例子,红色是新增部分。不妨去试验一下。


文章出自:刘帝勇的大观园http://blog.sina.com.cn/s/blog_3f2ef11801000bpn.html~type=v5_one&label=rela_nextarticle
posted @ 2009-03-26 11:26  LeimOO  阅读(182)  评论(0编辑  收藏  举报