SQL LIKE运算符用于查找存储的JSON中的单词

时间:2013-07-16 22:57:11

标签: sql json sql-like

我将此JSON存储在DB中: 列名:json

- '{"brand":"1","year":"2008","model":"2","price":"2001212","category":"Category Example"}'
- '{"brand":"1","year":"2008","model":"2","price":"2001212","category":"Category Example2"}'

我想使用Like运算符进行搜索,以查找具有“Category”字样的所有类别:

此刻我这样做,但只返回一个完整的短语:

select * from table where json like '%"category":"Category Example"%';

如何构建一个返回带有“类别字”的所有类别的查询?

更新:

我正在使用MySQL 感谢

4 个答案:

答案 0 :(得分:4)

虽然未申报,但这看起来像是一个Postgres问题。

当前版本9.2中几乎没有任何JSON处理工具。 但a whole set of tools将随即将发布的 Postgres 9.3 currently in beta一起提供。

我将您的问题解释为:

查找json列包含一个或多个名为“category”的字段的所有行,其中包含一个包含字符串“Category”的值。

One ore more?不确定Postgres是否强制执行唯一性,我手边没有9.3安装。

使用Postgres 9.3,您的查询可能如下所示:

SELECT *
FROM   tbl
WHERE  json->>'category' LIKE '%Category%'

->> ..“将JSON对象字段作为文本”

使用ILIKE进行不区分大小写的搜索。

更多相关答案:
How do I query using fields inside the new PostgreSQL JSON datatype?

答案 1 :(得分:2)

你可以使用图书馆吗? “通用模式”库提供了满足您需求的功能:

http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/extract_json_value.html

答案 2 :(得分:0)

也许我问了一个非常糟糕的问题,因为我可以使用Regexp进行搜索。

我找到了这个解决方案。也许这不是最快的方式,但是我需要的是:

select * from table where json regexp '"category":"([^"]*)Category([^"]*)"';

由于

答案 3 :(得分:0)

我希望这会有所帮助。

select * from table where json @> '{"category":"Category Example"}';