【问题标题】:How to search a H2 CLOB data type column using spring jdbctemplate query如何使用 spring jdbctemplate 查询搜索 H2 CLOB 数据类型列
【发布时间】:2021-06-11 14:12:01
【问题描述】:

我正在使用 H2 内存数据库。我有一个将数据存储为 CLOB 数据类型的 DB 列。我知道如何存储 CLOB 并从 DB 中读取它。
问题是我希望在 SQL 查询中使用 LIKE 子句进行通配符搜索。

我的栏目名称是“PAYLOAD”

我试过的 JDBC 查询,

SELECT * FROM TABLE WHERE PAYLOAD LIKE '%SOME-STRING%';
SELECT * FROM TABLE WHERE TO_CHAR(PAYLOAD) LIKE '%SOME-STRING%';

这些查询在 oracle 上运行良好,但当 spring JDBC 连接到 H2 DB 时不返回任何内容,也没有异常等。我尝试使用其他 varchar 列,这给了我类似子句的结果(健全性检查)。 我需要在这里进行什么配置?

【问题讨论】:

  • 发布您当前基于 java 的查询代码?
  • 真的没什么,就是上面提到的一个简单的jdbc模板做一个查询。 List res=template.query("select * from table where payload like ?", "%"+ keywordtosearch+"%");无法准确发布来自移动设备的评论
  • 编辑了我的问题 - 它特定于内存 H2 DB 连接。

标签: java spring h2 spring-jdbc clob


【解决方案1】:

感谢您回复评论。

基于此,您可以尝试将准备好的语句值的“%”部分移动到查询中。它可能会被转义(即按字面意思解释)。

再看一遍,我看到了一个很好的 SO 线程,它给出了不同的建议,所以也看看这里:

Using "like" wildcard in prepared statement

【讨论】:

  • 感谢您的回复。我可以根据通配符和类似子句获得其他 varchar 列的结果。只有当我尝试搜索 clob 列时,它才会给出 0 行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
  • 2018-05-31
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
相关资源
最近更新 更多