sky*_*ica 7 mysql sql string json where-clause
嗨,我有汽车列表网站,我想从 JSON 列中过滤多个值 data
我的数据库表如下所示:
id | label | data
---|----------|---------------------------------
1 | "test 1" | {"Year":"2014","Gear":"Auto"}
2 | "test 2" | {"Year":"2010","Gear":"Manual"}
3 | "test 3" | {"Year":"2009","Gear":"None"}
Run Code Online (Sandbox Code Playgroud)
例如,我想按齿轮过滤,“自动”或“手动”:
SELECT * FROM test WHERE
JSON_EXTRACT(data, "$.Year") in (2010,2014) AND
JSON_EXTRACT(data, "$.Gear") in ("Auto","Manual")
Run Code Online (Sandbox Code Playgroud)
当我添加过滤器时,查询返回零结果Gear,但过滤器Year工作正常。
JSON_EXTRACT返回一个包含引号的 JSON 字符串。您可以将其包含在搜索中:
SELECT * FROM test
WHERE JSON_EXTRACT(data, "$.Year") in (2010,2014)
AND JSON_EXTRACT(data, '$.Gear') IN ('"Manual"','"Auto"');
Run Code Online (Sandbox Code Playgroud)
或者使用的JSON_UNQUOTE功能:
SELECT * FROM test
WHERE JSON_EXTRACT(data, "$.Year") in (2010,2014)
AND JSON_UNQUOTE(JSON_EXTRACT(data, '$.Gear')) IN ('Manual','Auto');
Run Code Online (Sandbox Code Playgroud)
请参阅此处的小提琴:https : //www.db-fiddle.com/f/fC48mHEM1nuLUZCTP8CLfs/0
| 归档时间: |
|
| 查看次数: |
1615 次 |
| 最近记录: |