2017-05-28 60 views
0

我保存在PostgreSQL的数据下面给出条款:JSON凡在PostgreSQL的

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

我想搜索其中“标签2”或标签3存在记录?

谢谢先进。

表模式,创建过程为,

--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

列的数据类型是json –

+0

是那些标记列表,我的意思是“Tag1,Tag2,Tag3”是一个数组,还是只是一个文本? – marmeladze

+0

只是一个文本 –

回答

0

比方说,列名是tags。在这种情况下,你可以像下面那样查询。
如果有具体的东西,让我知道,所以我可能需要更新下面的代码片段。

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

看起来像你的'LIKE'模式缺少通配符。 –

+0

错误:列“Tag2”不存在 LINE 2:WHERE“Irs_tags”:: json - >'tags'ILIKE“Tag2” ^ ********** ****** **** ERROR:列“与Tag2”不存在 SQL状态:42703 性格:73 –

+0

亲爱Laurenz ALBE其示出错误该列“代码2”的剂量不存在甚至它不是列它是里面的数据贾森的标签栏。 –