У меня есть поле json custom_fields , и я хочу вставить новый путь с целочисленным значением другого пути в том же поле JSON. Выбор целочисленного значения работает для себя, но не в JSON_INSERT. Как я могу это сделать? < /P>
UPDATE product_translation
SET custom_fields = JSON_INSERT(custom_fields, '$."sorting"', SELECT CAST(JSON_EXTRACT(custom_fields, '$."product_attr4"') AS SIGNED) FROM product_translation)
WHERE JSON_CONTAINS_PATH(custom_fields, '$."product_attr4"')
< /code>
Редактировать:
@Barmar's Hint использовать json_unquote () < /code> принес мне лишню:
Использование в обновлении < /code>, вызывает SQL-fehler (1292): урисованный incorrect integer value: '15b' < /code>.SELECT JSON_VALUE(custom_fields, '$."product_attr4"') AS attr4, CAST(JSON_EXTRACT(custom_fields, '$."product_attr4"') AS SIGNED) AS attr4int FROM product_translation
WHERE JSON_SEARCH(custom_fields, 'one', '15b')
< /code>
показывает 16 строк с < /p>
|attr4|attr4int|
|15b |15 |
, но 16x Предупреждения: Warnung: (3156) Неверное значение JSON для CAST TO Integer из столбца JSON_EXTRACT в строке 1 (до 16)
Если я сделаю
SELECT JSON_VALUE(custom_fields, '$."product_attr4"') AS attr4, CAST(JSON_UNQUOTE(JSON_EXTRACT(custom_fields, '$."product_attr4"')) AS SIGNED) AS attr4int FROM product_translation
WHERE JSON_SEARCH(custom_fields, 'one', '15b')
< /code>
с тем же выводом, но после предупреждений Warnung: (1292) усеченное неверное целое значение: '15b' < /code>
Если я сделаю < /p>
SELECT JSON_EXTRACT(custom_fields, '$."migration_AQ-SW5_product_attr4"') AS attr4, CAST(JSON_EXTRACT(custom_fields, '$."migration_AQ-SW5_product_attr4"') AS SIGNED) AS attr4int FROM product_translation
WHERE JSON_CONTAINS_PATH(custom_fields, 'one', '$."migration_AQ-SW5_product_attr4"')
Нет предупреждений, и выход, как и ожидалось. {
"product_attr1": "7003868041, 700.3.86.804.1",
"product_attr2": "0",
"product_attr3": "0",
"product_attr4": "15b",
"product_attr6": 0,
"product_attr7": 1,
"product_attr8": 0,
"product_attr9": 0,
"product_attr10": 0,
"product_attr13": "0",
"setarticle_discount_type": 0,
"setarticle_discount_value": 0.0,
"setarticle_is_set_article": 0,
"setarticle_discount_automatically": 0,
"setarticle_calculate_price_automatically": 0
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... t-in-mysql
Как провести путь json_insert со значением выбора в MySQL? ⇐ MySql
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение