如果执行此查询,我将搜索包含以下内容的字段:
[水,可乐,7up]
[可乐,水,七杯以上]
所以,即使参数用大写字母写,我也要返回这些项目,为此,我正在使用此@Query
@Query("SELECT * from drinksList WHERE list LIKE '%'||:name||'%'")
我想念什么?
现在我正在使用LIKE %param%
,但问题是如果表是这样的:
[水,可乐,7up]
[可乐,沃特拉,7up]
[Waterg3d,可乐,7up]
[可乐,water23、7up]
我想找到一个能显示所有这些记录的“水”,而我只想找到“水”这个词是小写还是大写都没关系。
答案 0 :(得分:3)
以下应该可以工作:-
@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);