Arn*_*aga 2 mysql json mysql-5.7 json-extract
我需要使用 JSON 数据在 MYSQL 表中搜索数据。使用JSON_EXTRACT(@json, "$.link") LIKE '%http%'效果符合预期。但LIKE 'http%' or '%http'不!
这是否意味着 JSON_EXTRACT 不能与单通配符选择匹配一起使用?
例子:
这是我的 JSON
set @json = '{"link": "https://www.google.com"}' ;
Run Code Online (Sandbox Code Playgroud)
select JSON_EXTRACT(@json, "$.link") like '%com';
-- returns 0
select JSON_EXTRACT(@json, "$.link") like 'http%' ;
-- returns 0
select JSON_EXTRACT(@json, "$.link") like '%google%' ;
select JSON_EXTRACT(@json, "$.link") like '%http%' ;
select JSON_EXTRACT(@json, "$.link") like '%com%' ;
-- returns 1 !
Run Code Online (Sandbox Code Playgroud)
这是小提琴中的一个示例:https ://www.db-fiddle.com/f/7yPvfa2UZsZLdYSxdsnecx/0
JSON_EXTRACT 仍然返回 JSON。它不会返回“原始”值,尽管当您使用它提取单个数字时可能会产生这种印象,因为 JSON 表示数字的方式与 SQL 兼容。对于字符串来说情况并非如此。
换句话说:
set @json = '{"link": "https://www.google.com"}' ;
select JSON_EXTRACT(@json, "$.link");
Run Code Online (Sandbox Code Playgroud)
返回"https://www.google.com", not https://www.google.com,并且您LIKE必须考虑双引号。
要将 JSON 字符串转换为实际的 MySQL 字符串,请使用JSON_UNQUOTE().
| 归档时间: |
|
| 查看次数: |
5512 次 |
| 最近记录: |