2017-05-28 1 views
0

ich speichern Daten in PostgreSQL haben, wie unten angegeben:json where-Klausel in postgresql

{"tags": "Tag 1,Tag 2,Tag 3"} 
{"tags": "Tag 1,Tag 4,Tag 5"} 
{"tags": "Tag 6,Tag 1,Tag 2"} 

möchte ich Aufzeichnungen suchen, wo 'Tag 2' oder Tag 3 existiert?

Danke in fortgeschrittenem.

Tabellenschema erstellen Verfahren wie unten ist,

--create table 
CREATE TABLE "tblIrsInputTagging" ( 
    "IrsInputTaggId" serial NOT NULL, 
    "Irs_tags" json NOT NULL, CONSTRAINT "tblIrsInputTagging_pkey" 
    PRIMARY KEY ("IrsInputTaggId") 
) WITH (OIDS=FALSE); 
ALTER TABLE "tblIrsInputTagging" OWNER TO "postgre"; 

--insert json record 

INSERT INTO "tblIrsInputTagging" ("Irs_tags") 
VALUES ('{"tags": "Tag 1,Tag 2,Tag 3"}'); 

INSERT INTO "tblIrsInputTagging" ("Irs_tags") 
VALUES ('{"tags": "Tag 1,Tag 4,Tag 5"}'); 

INSERT INTO "tblIrsInputTagging" ("Irs_tags") 
VALUES ('{"tags": "Tag 6,Tag 1,Tag 2"}'); 
+0

Datentyp der Spalte ist json –

+0

sind jene taglists bedeuten i "Tag1, Tag2, Tag3" ein Feld, oder einfach nur einen Text? – marmeladze

+0

es ist nur ein Text –

Antwort

0

Sagen wir, der Spaltenname tags ist. In diesem Fall können Sie wie folgt abfragen.
Wenn es etwas Bestimmtes gibt, lass es mich wissen, also muss ich vielleicht unten Snippet aktualisieren.

SELECT col_1, col_2, .. col_n 
FROM your_table 
WHERE tags::json->'tags' ILIKE '%Tag2%' 
OR 
tags::json->'tags' ILIKE '%Tag3%' 
+1

Sieht aus wie Ihr 'LIKE' Muster Wildcards fehlt. –

+0

ERROR: Spalte "Tag2" existiert nicht LINE 2: WHERE "Irs_tags" :: json -> 'Tags' ILIKE "Tag2" ^ ********** Fehler ****** **** ERROR: Spalte "Tag2" existiert nicht SQL-Status: 42703 Zeichen: 73 –

+0

Sehr geehrter Laurenz Albe sein Fehler zeigt, dass Spalte "Tag 2" Dosen nicht existieren, auch ist es keine Spalte, es ist Daten innerhalb der Tag Spalte von Jason. –