PostgreSQL hstore

public class BatchSearchUtil {
       /**
        * 注意:因为select的只有id,所以可用的也就只有id,其他字段如果想获取值,要在select后加字段名称,不然会报错
        * @param lot
        * @param line
        * @param date
        * @param pi
        * @return
        */
       public static List<Batch> serchBatch(String lot, String line, String date, String pi) {
              List<Batch> batchIdList = new ArrayList<Batch>();
              String sql = "select b.id from t_batch b where ext::hstore @> ‘lot=>" + lot + ",line=>" + line + ",pi=>" + pi + ",date=>" + date + "‘";
              RawSql rawSql = RawSqlBuilder.parse(sql).create();
              Query<Batch> query = Ebean.find(Batch.class);
              batchIdList = query.setRawSql(rawSql).findList();
              return batchIdList;
       }
       public static List<Batch> serchBatch(String pi) {
              List<Batch> batchIdList = new ArrayList<Batch>();
              String sql = "select b.id,b. from t_batch b where ext::hstore @> ‘pi=>" + pi +"‘";
              RawSql rawSql = RawSqlBuilder.parse(sql).create();
              Query<Batch> query = Ebean.find(Batch.class);
              batchIdList = query.setRawSql(rawSql).findList();
              return batchIdList;
       }
}

先前曾跟大家说起过ext字段的用法,简单提到PostgreSQL对这种key/value数据类型的强大支持,但并没有举例,现在补上:

create extension hstore; -- 对当前数据库启用hstore扩展,支持key/value的就是该扩展

create table a(id bigint, ext text, primary key (id)); -- 注意ext字段不一定要是hstore类型的,这里的text相当于varchar

insert into a values(1, ‘x=>1,y=>2,z=>"z"‘); -- 这段字符串就是hstore的标准写法

select ext::hstore from a; -- 这里的::hstore是PG的语法用于将text/varchar转换为hstore数据类型

select * from a where ext::hstore -> ‘x‘=‘1‘; -- 查出所有ext中x这个键对应的值为1的记录

select * from a where ext::hstore ? ‘y‘; -- 查出所有ext具备y这个键的记录

select * from a where ext::hstore @> ‘x=>1,y=2‘::hstore; -- 查出所有同时满足x=1、y=2的记录

update a set ext = (ext::hstore||‘d=>"d"‘::hstore)::text where id = 1; -- 更新记录1,追加(或更新)一组key/value(d=>"d")

时间: 2024-10-14 13:38:22

PostgreSQL hstore的相关文章

PostgreSQL hstore 列性能提升一例

PostgreSQL 支持hstore 来存放KEY->VALUE这类数据, 事实上也相似于ARRAY或者JSON类型.  要高效的使用这类数据,当然离不开高效的索引.我们今天就来看看两类不同的索引对于同一种检索请求的性能问题. 假如我们有这样一个原始表.基于str1字段有一个BTREE索引. t_girl=# \d status_check; Table "ytt.status_check" Column | Type | Modifiers --------+--------

FreeSql (二十九)Lambda 表达式

FreeSql 支持功能丰富的表达式函数解析,方便程序员在不了解数据库函数的情况下编写代码.这是 FreeSql 非常特色的功能之一,深入细化函数解析尽量做到满意,所支持的类型基本都可以使用对应的表达式函数,例如 日期.字符串.IN查询.数组(PostgreSQL的数组).字典(PostgreSQL HStore)等等. IFreeSql fsql = new FreeSql.FreeSqlBuilder() .UseConnectionString(FreeSql.DataType.MySql

.NET ORM 开源项目 FreeSql 1.0 正式版发布

一.简介 FreeSql 是 .NET 平台下的对象关系映射技术(O/RM),支持 .NetCore 2.1+ 或 .NetFramework 4.0+ 或 Xamarin. 从 0.0.1 发布,历时整整一年的迭代更新,原计划元旦发布1.0,可能作者比较急提前了几天发布.其实是元旦有其他事-- 本文内容从简,介绍项目的主要功能框架,以及暂时能想到的可能比较有说服力的特性. 二.项目统计 主仓库解决方案共计项目:29个 单元测试:3510个 Code Issues:168个 文档Wiki:43个

特殊的数据类型的介绍 in postgresql

hstore是一种比较特殊的数据类型,用来存储具有多个属性值的数据. acquire key/value       ==> reference: https://www.postgresql.org/docs/8.4/static/hstore.html 空间数据类型 ==>http://workshops.boundlessgeo.com/postgis-intro/geometry_returning.html 未完待续......

postgresql 和.NET类型对照表

PostgreSQL type 默认的 .NET 类型 特定提供的类型 其他 .NET 类型 bool bool     int2 short   byte, sbyte, int, long, float, double, decimal, string int4 int   byte, short, long, float, double, decimal, string int8 long   long, byte, short, int, float, double, decimal,

正确使用PostgreSQL的数组类型

2014-03-03 10:10 佚名 开源中国编译 我要评论(0) 字号:T | T 在Heap中,我们依靠PostgreSQL支撑大多数后端繁重的任务,我们存储每个事件为一个hstore blob,我们为每个跟踪的用户维护一个已完成事件的PostgreSQL数组,并将这些事件按时间排序. AD:2014WOT全球软件技术峰会北京站 课程视频发布 在Heap中,我们依靠PostgreSQL支撑大多数后端繁重的任务,我们存储每个事件为一个hstore blob,我们为每个跟踪的用户维护一个已完成

PostgreSQL是不是你的下一个JSON数据库?

根据Betteridge定律(任何头条的设问句可以用一个词来回答:不是),除非你的JSON数据很少修改,并且查询很多. 最新版的PostgreSQL添加更多对JSON的支持,我们曾经问过PostgreSQL是否可以替换MongoDB作为JSON数据库,答案显而易见,但我们更希望的是,啊哈,这个问题由读者来问了. "PostgreSQL不是已经有一些json的支持了吗?" 是的,在PostgreSQL 9.4之前的版本也有JSON 数据类型了,你可以这样: CREATE TABLE ju

PostgreSQL指南

PostgreSQL指南 历史简介 最近几年Postgres的关注度变得越来越高. 它加快了Postgres的发展步伐, 与此同时其他 的关系数据库系统的发展放缓. 在数据库领域中 Postgre SQL/PostgreSQL/Postgres 有着非常悠久的 历史, 它的名字来自于一个最早的数据库系统Ingres (Post ingres = Postgres), Postgres的实现始于 1986 年. 目录 安装 安装 Postgres 用户管理 常规的SQL 查询数据 Joins 视图

Postgresql 报表性能测试

1. 测试数据 表结构 一: CREATE TABLE fact_data ( day_id integer, popdb_id integer, region_id integer, area_id integer, city_id integer, product_id integer, f1 integer, f2 integer, f3 integer, f4 integer, f5 integer, f6 integer, f7 integer, f8 integer, user_id