У меня есть таблица card_percentage
с DDL:
CREATE TABLE card_percentage
(
id int UNSIGNED AUTO_INCREMENT PRIMARY KEY,
jdoc json NULL
);
В ней одна строка данных
id | jdoc
------------
1 | {"AMXC": [{"enabled": "y", "bank_code": "AMXC", "max_amount": 99999999.99, "min_amount": 0.0, "percentage": 2.5}], "VISA": [{"enabled": "y", "bank_code": "VISA", "max_amount": 1999.99, "min_amount": 0.0, "percentage": 2.8}, {"enabled": "y", "bank_code": "VISA", "max_amount": 99999999.99, "min_amount": 2000.0, "percentage": 1.8}]}
Beautified JSON для удобства чтения
{
"AMXC": [
{
"enabled": "y",
"bank_code": "AMXC",
"min_amount": 0.0,
"max_amount": 99999999.99,
"percentage": 2.5
}
],
"VISA": [
{
"enabled": "y",
"bank_code": "VISA",
"min_amount": 0.0,
"max_amount": 1999.99,
"percentage": 2.8
},
{
"enabled": "y",
"bank_code": "VISA",
"min_amount": 2000.0,
"max_amount": 99999999.99,
"percentage": 1.8
}
]
}
Теперь я хочу выбрать percentage
для VISA
, когда сумма 200
находится между min_amount
и max_amount
. Для этого я использую следующий запрос, но он ничего не дает в наборе результатов.
SELECT id,
jdoc -> '$.VISA[*].percentage' percentage
FROM card_percentage
WHERE id = 1
AND jdoc -> '$.VISA[*].min_amount' <= 200
AND jdoc -> '$.VISA[*].max_amount' >= 200
;