【问题标题】:How to select a column in with a CLOB datatype如何选择具有 CLOB 数据类型的列
【发布时间】:2011-07-05 16:31:39
【问题描述】:

我的 jsp 页面上有一个表格,其中有一列由 CLOB 类型的数据库列填充。我在执行此操作时遇到了一些麻烦,并且看到了其他有关此问题的问题,但答案对我不起作用。这是我的声明,其中 cmets 是 CLOB。

   stmt = conn.prepareStatement("SELECT DISTINCT restriction, person, start_date, end_date, comments "
                           + "  FROM restrictions WHERE person = ? "
                           + "   AND (start_date BETWEEN TO_DATE (? , 'yyyy/mm/dd') AND TO_DATE (? , 'yyyy/mm/dd') "
                           + "    OR start_date < TO_DATE (? , 'yyyy/mm/dd') AND end_date IS NULL) " );

        stmt.setString(1, Id);
        stmt.setString(2, StartRest);
        stmt.setString(3, EndRest);
        stmt.setString(4, EndRest);
        result = stmt.executeQuery();     

然后我将列在一个while循环中:

   while (result.next()) {     
        restrictions = StringUtils.defaultString(result.getString("str_restriction"));
        .......
        // here is where I would get my Clob data from the query.

所以,基本上,我想知道是否有办法在查询中翻译 CLOB,甚至在 java 代码中,这样它就可以在我的页面中使用。

【问题讨论】:

  • 2 个问题:CLOB 是哪一部分?限制?第二:为什么它是 CLOB 而不是文本(或中/长文本)?从你的描述看不清楚
  • 感谢阅读。 1. 'cmets' 是一个 CLOB,见第一段 2。一些(很少)在列中有很长的文本。不幸的是,表设计不是我的,所以它可能只是创建时的另一种数据类型。
  • 1.你有什么烦恼?你尝试了什么,你有什么例外?你试过getClob()吗? 2. 为什么不使用日期(java.sql.Date 实例)而不是必须用 TO_DATE 解析的字符串?
  • 1. ORA-00932:不一致的数据类型:预期 - 得到 CLOB,这是我在运行 SQL 时得到的错误。 2. 我想我能做到,现在一切都一样(至少在我微调代码之前);)

标签: java sql clob


【解决方案1】:

问题来自查询的 distint 子句,它不能应用于 CLOB。

检查是否确实需要 distinct 关键字。或者,也许您可​​以将查询重写为

select restriction, person, start_date, end_date, comments from restrictions 
where id in (select distinct id from restrictions where <original where clause>)

PS:下次,请在问题中包含错误消息和您的数据库。我已经能够通过简单的谷歌搜索“ora-00932 clob”找到问题。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-20
  • 2018-02-23
  • 2022-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-22
相关资源
最近更新 更多