gpt4 book ai didi

sql - sqlite中的多个LIKE

转载 作者:IT王子 更新时间:2023-10-29 06:23:48 25 4
gpt4 key购买 nike

我正在尝试创建一个搜索功能。

如果搜索输入字段是“foo bar”,我将它分成两个关键字然后执行此查询:

SELECT p.* FROM p_extra_fields as x INNER JOIN products as p ON x.product = p.id
WHERE x.type = "1"
AND
(
(x.key = "model" AND x.value LIKE "%foo%")
OR (x.key = "model" AND x.value LIKE "%bar%")
OR (x.key = "color" AND x.value LIKE "%foo%")
OR (x.key = "color" AND x.value LIKE "%bar%")
OR (x.key = "make" AND x.value LIKE "%foo%")
OR (x.key = "make" AND x.value LIKE "%bar%")
)

GROUP BY x.product LIMIT 0, 50

关键字的数量可能会更多,所以我可能需要更多的“赞”。 “键”的数量也可以增加:)

有什么方法可以简化这个查询吗?我可以做类似 LIKE("%foo%", "%bar%") 的事情吗?

最佳答案

如果你有SQLite FTS3 and FTS4 Extensions启用后,您就可以利用全文搜索 (FTS) 功能。您需要将 p_extra_fields 表重新创建为 VIRTUAL table 。然后您可以在搜索词之间插入 OR 并使用 MATCH 运算符...

SELECT p.* 
FROM p_extra_fields x
JOIN products p ON p.id = x.product
WHERE x.key IN ('model', 'color', 'make')
AND x.type = '1'
AND x.value MATCH 'foo OR bar'
GROUP BY x.product LIMIT 0, 50;

好消息here还。点击here在 SQL Fiddle 上查看它的运行情况。

关于sql - sqlite中的多个LIKE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18423979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com