Skip to content

Instantly share code, notes, and snippets.

@1234ru
Last active June 8, 2020 12:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 1234ru/282d0a52c1361477d400e2c878416444 to your computer and use it in GitHub Desktop.
Save 1234ru/282d0a52c1361477d400e2c878416444 to your computer and use it in GitHub Desktop.
Разное про СУБД MySQL

Точечная замена элементов в JSON-полях

INSERT INTO some_table 
  (id, json_column)
VALUES
  (1, '{"x": 1000}')
ON DUPLICATE KEY UPDATE
  json_column = JSON_SET(json_column, "$.x", 1000)

С защитой имеющейся записи:

  ...
  json_column = IF(
    json_column->"$.x" IS NULL,
    JSON_SET(json_column, "$.x", 1000),
    json_column
  )  

Аналогичного эффекта - защиты существующей записи - можно добиться с помощью JSON_INSERT(). Противоположного эффекта - только замены существующей записи без добавления новой - можно добиться с помощью JSON_REPLACE().

Подробнее: о путях в JSON, о JSON_SET().

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment