Spring Data R2DBC如何为PostgreSQL构建字符串数组自定义LIKE查询
正确写法说明
你之前的写法报错是因为SpEL表达式与参数占位符混用,触发了Spring Data R2DBC的查询解析错误。你可以根据自己传参的格式选择以下两种方案:
方案1:传入数组已包含%通配符
如果调用方法前已经给arr的每个元素前后拼接了%(例如传入值为["%1%", "%2%", "%3%"]),直接使用以下写法即可,同时用ILIKE替换LIKE满足忽略大小写的需求:
@Query("select * from stocks where title ILIKE ANY (:arr)") Flux<Stock> searchByArrayValueIgnoreCase(String[] arr);
方案2:传入数组为原始关键词(不带通配符)
如果希望在SQL层自动给关键词拼接%通配符,可以用PostgreSQL的unnest函数处理数组后再拼接:
@Query("select * from stocks where title ILIKE ANY (array(SELECT CONCAT('%', unnest(:arr), '%')))") Flux<Stock> searchByArrayValueIgnoreCase(String[] arr);
内容的提问来源于stack exchange,提问作者Serg
相关产品推荐
相关产品推荐

