【问题标题】:caml query error: The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operatorcaml 查询错误:text、ntext 和 image 数据类型无法比较或排序,除非使用 IS NULL 或 LIKE 运算符
【发布时间】:2011-01-15 06:45:57
【问题描述】:

在对共享点字段进行排序时。产生如下错误:

text、ntext 和 image 数据类型不能进行比较或排序,除非使用 IS NULL 或 LIKE 运算符。 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Data.SqlClient.SqlException:text、ntext 和 image 数据类型无法比较或排序,除非使用 IS NULL 或 LIKE 运算符。

CAML查询orderby子句如下:

<Where>
  <And>
    <And>
      <Eq>
        <FieldRef Name='ContentType' />
        <Value Type='Choice'>Documents</Value>
      </Eq>
      <Eq>
        <FieldRef Name='UserID' />
        <Value Type='Text'>UserID_VAL</Value>
      </Eq>
    </And>
    <Neq>
      <FieldRef Name='Email' />
      <Value Type='Text'>NA</Value>
    </Neq>
  </And>
</Where>
<OrderBy>
  <FieldRef Name='Description' Ascending='TRUE'  Nullable='TRUE'/>
</OrderBy>

被排序的字段是描述,它在列表中具有以下数据类型 描述 单行文本。

此问题的任何解决方案。

提前致谢。

【问题讨论】:

    标签: sharepoint sql-order-by caml


    【解决方案1】:

    尝试使用多行列(注意)进行排序的 Caml 查询将会并且应该产生以下错误:

    “text、ntext 和 image 数据类型不能进行比较或排序,除非使用 IS NULL 或 LIKE 运算符。”

    SharePoint MultiLine 或 Note 列作为 ntext 数据类型存储在内容数据库的 AllUserData 表中。 SQL Server 无法使用 text、ntext 或 image 数据类型进行排序。解决此问题的唯一方法是不使用 CAML 中的排序功能并自行对返回的数据集进行排序。

    http://social.msdn.microsoft.com/forums/en-US/sharepointdevelopment/thread/c7a1e8b7-62c0-4b90-8a9b-cc7e3fa6940c

    【讨论】:

    • 我之前看过这篇文章。但应该有另一种方式。 CAML 查询中是否有将 NULL 值替换为空白以便对其进行排序的功能。
    • 这里抛出的错误不是来自您的 CAML,而是来自数据库,因此除非您创建计算列或获取数据集中的所有项目并对其进行排序,否则任何操作都将不起作用
    • 在某个时候 CAML 将被转换为 SQL。所以可能有办法修改 CAML 以生成必要的 SQL。
    猜你喜欢
    • 2016-12-23
    • 2013-02-05
    • 2011-11-25
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    相关资源
    最近更新 更多