【问题标题】:How to write Couchbase N1QL query in spring data?如何在 Spring Data 中编写 Couchbase N1QL 查询?
【发布时间】:2023-03-27 11:14:02
【问题描述】:

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

 "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;

【问题讨论】:

    标签: java spring-boot n1ql spring-data-couchbase


    【解决方案1】:

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

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

    如果你想寻找这样的价值写

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

    【讨论】:

    • 谢谢你通过添加'%'对我有用|| $1 || '%'
    猜你喜欢
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 2018-03-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多