簡體   English   中英

SQL json 提取數組中的位置

[英]SQL json extract where in array

我有帶有json類型attributes列的users表:

示例值:

attributes: {"connection": "HTTP"},
attributes: {"connection": "API"}

當我嘗試使用帶有一個參數的WHERE IN()時,一切正常

SELECT * FROM users WHERE JSON_EXTRACT(attributes, '$.connection') IN ("HTTP");

但是當我嘗試使用多個值時,它對我不起作用

SELECT * FROM users WHERE JSON_EXTRACT(attributes, '$.connection') IN ("API", "HTTP");

在這種情況下,什么也不返回。 如何獲取在WHERE IN()值中具有已定義連接之一的用戶?

在 MySQL 5.7 中(可能只有更高的 5.7 版本;我看到一些跡象表明某些 JSON_EXTRACT 行為在 5.7.10 或 5.7.11 中發生了變化),當 JSON_EXTRACT 返回的左操作數用作字符串時,它似乎沒有將 JSON 值轉換為到IN 這適用於 5.7 和 8.0:

SELECT * FROM users WHERE JSON_UNQUOTE(JSON_EXTRACT(attributes, '$.connection')) in ('HTTP','API');

https://dbfiddle.uk/?rdbms=mysql_5.7&fiddle=ea3e311a775cf30e393b6ac07b7fde30

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM