Autor Zpráva
err
Profil *
Ahoj, v databázi mám toto (dávám příklad) řádek JSON (long text):
{
  "emoji": {
    "food": {
      "good": "apple",
      "normal": "value2"
    }
  }
}

Jak to mám napsat SQL abych upravil emoji->food->good na hodnotu například na "strawberry"?
Firibix
Profil
Reakce na err:
Nijak. Vytáhni si celý JSON do aplikace, použij funkce tvého programovacího jazyka a upravený JSON ulož zpátky. Ideálně místo textového typu používej přímo nativní datový typ pro JSON, který tvoje databáze nabízí. Pak možná (např. v PostgreSQL) budeš moci JSON manipulovat přímo v SQL.
juriad
Profil
Jakou databázi a jakou její verzi používáš?
Přestože není dobré ukládat JSON jako text, je možné hodnotu CASTovat a následně s ní pracovat. Dostatečně nová MySQL by to měla tvoji operaci podporovat: dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html
err
Profil *
Firibix:
ano, v mysql jsem to vytvořil jako JSON, lze tedy využívat mysql funkce pro práci s JSONem... takže to nejde?


juriad:
je to tabulka vytvořená jako JSON... asi jsem to napsal předtim blbě (nevytvořil jsem to jako long text, ale jako JSON)
...lze to tedy nějak upravit přímo aby to nemusel nejdříve vytahovat a potom ukládat?
Radek9
Profil
err:
Ano. Prostě nějak takhle:
UPDATE tabulka SET data = JSON_SET(data, '$.emoji.food.good', 'strawberry') WHERE id = 1
err
Profil *
Radek9:
Ano. Prostě nějak takhle:
nefunguje to...


Radek9:
Ano. Prostě nějak takhle:
promin... jo funguje to... měl jsem špatný název sloupce....


díky

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0