Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在postgresql json字段中搜索关键字_Sql_Json_Postgresql_Postgresql 9.1 - Fatal编程技术网

在postgresql json字段中搜索关键字

在postgresql json字段中搜索关键字,sql,json,postgresql,postgresql-9.1,Sql,Json,Postgresql,Postgresql 9.1,我目前正在使用postgres 9.3.3 下面是我的桌子的样子- Column | Type | Modifiers | Storage | Stats target | Description --------------------+--------------------------+-----------------

我目前正在使用postgres 9.3.3

下面是我的桌子的样子-

 Column       |           Type           |                             Modifiers                              | Storage  | Stats target | Description 
--------------------+--------------------------+--------------------------------------------------------------------+----------+--------------+-------------
 id                 | integer                  | not null default nextval('playerbase_palyerdata_id_seq'::regclass) | plain    |              | 
 date_joined        | timestamp with time zone | not null                                                           | plain    |              | 
 belongs_to_camp_id  | integer                  | not null                                                           | plain    |              | 
 belongs_to_coach_id | integer                  | not null                                                           | plain    |              | 
 json_kvps          | character varying(2000)  | not null                                                           | extended |              | 
一个样本数据如下所示:

id |      date_joined   | belongs_to_camp_id | belongs_to_coach_id | json_kvps

1  | 2014-03-07 18:10:45.824749+05:30 |                 1 |                  1 | {"alumnicode": "2003360009", "emailusername": "aaron@hotmail.com", "altemail": "", "salutation": "Mrs", "fname": "Aaron", "mname": "V", "lname": "Schwartz", "fullname": "Aaraon M Scwartz", "programmename": "MEP", "batchyearin": "2003"}
SELECT * FROM playerbase_playerdata WHERE json_kvps->>'emailusername' = 'aaron@hotmail.com';
现在我想搜索整个表,并找到一个具有“emailusername”的用户:aaron@hotmail.com"

正如这里所提到的-

我试着写一个如下的查询-

id |      date_joined   | belongs_to_camp_id | belongs_to_coach_id | json_kvps

1  | 2014-03-07 18:10:45.824749+05:30 |                 1 |                  1 | {"alumnicode": "2003360009", "emailusername": "aaron@hotmail.com", "altemail": "", "salutation": "Mrs", "fname": "Aaron", "mname": "V", "lname": "Schwartz", "fullname": "Aaraon M Scwartz", "programmename": "MEP", "batchyearin": "2003"}
SELECT * FROM playerbase_playerdata WHERE json_kvps->>'emailusername' = 'aaron@hotmail.com';
我希望得到一个如上所述的列,但我得到了以下错误-

ERROR:  operator does not exist: character varying ->> unknown
LINE 1: ...ELECT * FROM memberbase_memberdata WHERE json_kvps->>'emailu...
                                                             ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

有人能告诉我,我缺少什么吗?

像这样的功能只存在于PostgreSQL 9.3版。 因此,不幸的是,要进行这样的查询,您需要更新您的PostgreSQL

如果您有9.3,那么您需要使用json列类型

这里你可以看到一些例子。它帮助了我,早些时候:


祝您今天愉快。

对于django车型,您可以使用JsonField


它工作正常,但如果您使用的是低于9.2的PostgreSQL版本,它将创建字符列。

对于PostgreSQL 9.3或更高版本,一种可能的解决方案是使用json转换:

select [Required Fields] from  [Table Name] WHERE  [Column Name]::text = '{[Key]}' ::text
从playerbase\u playerdata中选择*其中json\u kvps->>“emailusername”='aaron@hotmail.com';


SELECT*FROM playerbase\u playerdata WHERE CAST(json\u kvps AS json)->“emailusername”='aaron@hotmail.com';

“有人能告诉我,我缺少什么吗?”文档中的postgres版本号。这些操作员添加到9.3中。9.2中提供的一些功能。但是9.1.1中的任何内容都没有升级到9.3.3版本,因此标题和标签中也没有反映正确的版本。-对于您的问题:您必须使用
json
类型,而不是
text
varchar
。该表由django ORM生成。任何如何指定json的指针?在这里找不到任何东西,但如果您能够运行原始查询,您可以在创建后将其类型更改为
json
。-您还可以在运行时查询时将
CAST
转换为
json
,但这会使查询速度变慢。