【问题标题】:Can mysql json_contains be case insensitive?mysql json_contains 可以不区分大小写吗?
【发布时间】:2019-07-02 12:37:26
【问题描述】:

我希望能够使用json_contains“搜索”不区分大小写

这是 json 示例:

[
  {
    "title": "foo Bar",
    "author": "melaine"
  },
  {
    "title": "incredible",
    "author": "steve"
  }
]

我尝试了什么:

SELECT json_contains('[{"title":"foo Bar", "authour": "melaine"}, {"title":"foo barius", "authour": "steve"}]', '{"title":"foo bar"}')

预期结果:1

实际结果:0

因为我寻找“foo bar”并且 json 中的值是“foo Bar”,所以我没有找到匹配项。有没有办法让这个大小写不敏感,所以我得到一个匹配?

【问题讨论】:

    标签: mysql sql json


    【解决方案1】:

    您可以使用LOWER() 函数将 JSON (haystack) 和搜索块 (needle) 转换为小写,以进行不区分大小写的搜索:

    SELECT json_contains(LOWER('[{"title":"foo Bar", "authour": "melaine"}, {"title":"foo barius", "authour": "steve"}]'), 
                         LOWER('{"title":"foo bar"}'))
    

    DB Fiddle Demo

    【讨论】:

    • 这比我想象的要容易,谢谢!我仍然有一个问题:这是否也适用于干草堆是一列填充有类似 JSON 值的行?或者这只适用于这个干草堆只是一个字符串的小例子?
    • @dylanvanw 你可以这样做 JSON_CONTAINS(JSON_EXTRACT(LOWER(COLUMN_NAME), '$.NODE'), LOWER('{"title":"foo bar"}'))跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 2013-07-08
    相关资源
    最近更新 更多