【问题标题】:SQL Search in JSON values contains wordJSON 值中的 SQL 搜索包含单词
【发布时间】: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%"

我唯一担心的是这是否会在很多行的情况下保持快速..

【问题讨论】:

    标签: mysql sql mariadb


    【解决方案1】:
    SELECT * 
    FROM logs_1 
    WHERE data->>'$.steamnaam' LIKE '%fin%' /* COLLATE according CI collation */
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-08
      • 2023-03-09
      • 2020-01-17
      • 1970-01-01
      相关资源
      最近更新 更多