0
Ich habe derzeit eine PostgreSQL-Tabelle, die etwa so aussieht, die Datenspalte ist JSON, ich versuche, die Tabelle basierend auf Schlüssel abzufragen, die möglicherweise in den JSON-Daten enthalten sind.Postgres Abfrage JSON Daten
| A | B | C | data |
----------------------------------------------------
| 1 | 2 | 3 | {} |
| 2 | 3 | 3 | {"name": "jack", "message": "123"} |
| 3 | 4 | 3 | {"name": "jill", "voice": "456"} |
| 4 | 2 | 3 | {"name": "bill", "email" "789"} |
Zur Zeit habe ich
SELECT *
FROM (
SELECT
a,
b,
c,
coalesce(
CASE
WHEN (data ->> 'message') IS NULL
THEN NULL
ELSE (data ->> 'message')
END,
'') AS message,
coalesce(
CASE
WHEN (data ->> 'voice') IS NULL
THEN NULL
ELSE (data ->> 'voice')
END,
'') AS voice,
coalesce(
CASE
WHEN (data ->> 'email') IS NULL
THEN NULL
ELSE (data ->> 'email')
END,
'') AS email
FROM mytable) AS t
WHERE (t.message = "789" OR
t.voice = "789" OR
t.email = "789");
Ich bin derzeit immer den Fehler, Fehler: Spalte „789“ existiert nicht
Ich weiß, es ist wahrscheinlich eine effizientere Art und Weise tun. Jede Hilfe sehr geschätzt.
Strings müssen in einfachen Anführungszeichen in SQL eingeschlossen werden. Anführungszeichen sind für Bezeichner. –
Ahhhhhh! so offensichtlich. Vielen Dank –