【发布时间】:2022-01-31 13:01:21
【问题描述】:
我正在尝试制作一种搜索引擎,通过我的数据库中的 JSON 值进行搜索。
我有一个表,其中 data 中有一个名为 data 的列,其中有一个 JSON 字符串,例如:
{"type_geld":"cash","bedrag":15.0,"totaal":8899.0,"reden":"itemshop-bought-item","citizenid":"EHT44095","steamnaam":"Finn"}
现在我想搜索关键字 steamnaam 我目前正在使用这个查询:
SELECT * FROM logs_1 WHERE JSON_CONTAINS(lower(`data`), '"finn"', "$.steamnaam")
这确实给了我 steamname JSON 中包含 finn 作为值的行。 但现在我也想让它检查它是否不完全相同,但几乎相同。所以基本上是一个 LIKE 搜索。我可以用 JSON_CONTAINS 或类似的东西来实现吗?
所以如果我输入 fin 而不是 finn 我也希望它列出行,因为它几乎匹配 finn。
我尝试了很多东西,但无法弄清楚,希望有人为我提供解决方案!谢谢。
我找到的解决方案:
显然在谷歌搜索后,我发现了这个查询,这正是我想要的:
SELECT * FROM logs_1 WHERE JSON_EXTRACT(lower(`data`), "$.steamnaam") LIKE "%fin%"
我唯一担心的是这是否会在很多行的情况下保持快速..
【问题讨论】: