【问题标题】:How can I get the exact word in a sentence我怎样才能得到一个句子中的确切单词
【发布时间】:2019-07-09 17:28:13
【问题描述】:

如果我执行此查询,我会搜索包含以下内容的字段:

[水,可乐,7up]

[可乐,水,7up]

所以,即使参数是大写字母,我也想返回这些项目,为此我使用@Query

@Query("SELECT * from drinksList WHERE list LIKE '%'||:name||'%'")

我错过了什么?

编辑

现在我正在使用LIKE %param%但问题是如果表格是这样的:

[水,可乐,7up]

[可乐,waterera,7up]

[Waterg3d,可乐,7up]

[可乐、水23、7up]

我想找到“水”这个词,它会显示所有这些记录,我只想找到“水”这个词,不管它是小写还是大写。

【问题讨论】:

  • 但是,即使用户键入 CoKe,我怎样才能对像 [Water, coke, 7up] 这样的字符串执行此操作以返回此值?
  • @CPerkins 第一个选项现在对我有用......这个不是,这是我正在使用的数据库:sqliteonline.com/#fiddle-5d24f6455d161js6jxw99v6u
  • @CPerkins 也许你不想去想,或者检查数据库里面有什么,我的问题很清楚,我有像我的问题一样的条目,我只想得到例如,包含“water”而不是“waterera”的那些,如果您检查我发送给您的链接,您会发现数据库是相同的,但具有其他值......。

标签: java android sqlite kotlin android-room


【解决方案1】:

以下应该可以工作:-

@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 并单击 Selective 按钮会导致:-

进入 7Up :-

等等。

查询是:-

@Query("SELECT * FROM DrinkList WHERE list||',' LIKE '%'||:name||',%' OR list||',' LIKE :name||',%'")
List<DrinkList> getSelectiveDrinks(String name);

【讨论】:

  • 感谢您发布答案@MikeT 我最终用collate = NOCASE 做第一件事,但是列表不适用于这种方法,所以我试图得到里面的任何单词字符串
猜你喜欢
  • 2018-05-27
  • 1970-01-01
  • 2015-12-15
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
  • 2022-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多