如果执行此查询,将搜索包含以下内容的字段:
水,焦炭,7升
可乐,水,7升
所以,即使参数是用大写字母写的,我也想返回这些项,为此,我使用这个@Query
@Query("SELECT * from drinksList WHERE list LIKE '%'||:name||'%'")我遗漏了什么?
编辑
现在我使用的是LIKE %param%,但问题是如果表是这样的:
水,焦炭,7升
可乐,水,7升
Waterg3d,焦炭,7升
焦炭,water23,7升
我想找一个“水”,它会显示所有这些记录,我只想找到“水”这个词,不管它是小写还是大写。
发布于 2019-07-09 17:41:04
下列措施应能发挥作用:
@Query("SELECT * from drinksList WHERE list||',' LIKE '%'||:name||',%' OR list||',' LIKE :name||',%'")这是基于/测试了以下方法:-
DROP TABLE IF EXISTS DrinksList;
CREATE TABLE IF NOT EXISTS DrinksList (list TEXT UNIQUE NOT NULL);
INSERT INTO DrinksList VALUES
('Water, spicy, coke'), -- Should be found when searching for water
('Coke'), -- will not be found when seraching for water
('Spicy, water, coke'), -- Should be found
('Coke, spicy, water'), -- Should be found
('wateria, spicyer, cokeer'), -- should not be found
('Water, coke, 7up'), -- should be found
('Coke, waterera, 7up'), -- should not be found
('Waterg3d, coke, 7up'), -- should not be found
('Coke, water23, 7up') -- should not be found
;
SELECT * from drinkslist WHERE list||',' LIKE '%'||'water'||',%' OR list||',' LIKE 'water'||',%';结果:-

上述各项均经测试,并在室内运作如下:
所有列表显示:-

在编辑文本中输入wAtER并单击选择按钮,结果为:-

输入7Up :-

诸若此类。
查询如下:
@Query("SELECT * FROM DrinkList WHERE list||',' LIKE '%'||:name||',%' OR list||',' LIKE :name||',%'")
List<DrinkList> getSelectiveDrinks(String name);https://stackoverflow.com/questions/56957820
复制相似问题