java - 如何在 Spring Data 中编写 Couchbase N1QL 查询?

标签 java spring-boot sql++ spring-data-couchbase

我想编写一个查询来查找包含子字符串的字符串列表, 例如

 "xyz-1",
 "xyz-2",
 "xyz-3",
 "xyz-4".....

上面是我需要查找的字符串列表,但我仅输入 xyz,而不是全名 xyz-1。

在 couchbase 服务器中,我实现了如下查询,

SELECT * FROM test
WHERE ANY v IN namelist SATISFIES v LIKE '%xyz%' END;

这将为我提供所有包含 xyz 的列表名称。 但在 Spring boot 应用程序中实现它不起作用。

下面是我的 spring boot @query menthod

@Query("Select * from `test` where #{#n1ql.filter} And ANY v In namelist SATISFIES v Like '%$1'% END within #{#n1ql.bucket}")
List<String> findBynameList(String name);

下面是我的 pojo 类,

    @Id
    private String car_id;
    @Field
    @NotNull
    private String name;
    @Field
    private List<String> namelist;

最佳答案

LIKE 的右侧必须是字符串或查询字符串的命名/位置参数。

如果查询命名/位置参数,里面的字符串将不会被替换。您有 '%$1'% ,它将查找 $1 而不是值。

如果你想寻找值(value),就这样写

v LIKE $1    ===> supply $1 as "%actualvalue%"
v LIKE "%" || $1 || "%" 

关于java - 如何在 Spring Data 中编写 Couchbase N1QL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59100186/

相关文章:

couchbase - 如何加入一个数组中的元素,该数组也是另一个数组的一部分,以便在 couchbase 中获得最佳性能?

java - Netbeans 6.7和6.8中对java swing开发的支持不好?

java - 如何在此程序中仅使用两个字符串?

java - 选择排序从两端开始增长有序范围

java - Spring Data REST - HAL 浏览器 - 返回 HAL 浏览器 HTML 而不是 API 的根

couchbase - 如何将一个文档中的数组值映射到另一个文档并显示在结果中

java - 用于查找引号之间匹配项的正则表达式

java - Spring Data REST - 如何在投影中包含计算数据?

java - 使用 Morphia 及其 BasicDAO 更新实体

couchbase - 更新嵌套数组 n1ql