小编Hou*_*ari的帖子

如何在Postgres 9.4中对JSONB类型的列执行更新操作

查看Postgres 9.4数据类型JSONB的文档,对我来说如何对JSONB列进行更新并不是很明显.

JSONB类型和函数的文档:

http://www.postgresql.org/docs/9.4/static/functions-json.html http://www.postgresql.org/docs/9.4/static/datatype-json.html

作为示例,我有这个基本的表结构:

CREATE TABLE test(id serial, data jsonb);
Run Code Online (Sandbox Code Playgroud)

插入很简单,如:

INSERT INTO test(data) values ('{"name": "my-name", "tags": ["tag1", "tag2"]}');
Run Code Online (Sandbox Code Playgroud)

现在,我将如何更新"数据"列?这是无效的语法:

UPDATE test SET data->'name' = 'my-other-name' WHERE id = 1;
Run Code Online (Sandbox Code Playgroud)

这个文件记录在哪里,我错过了吗?谢谢.

postgresql crud sql-update jsonb postgresql-9.4

110
推荐指数
8
解决办法
12万
查看次数

postgres regexp_replace只允许az和AZ

在字符串的表格列中,我们可以有数字/特殊字符/空格.我想用空字符替换数字/特殊字符/空格,我看到有功能命名,regexp_replace但如何使用不太多的用户友好帮助例如我想使用以下字符串.

String = 'abc$wanto&toremove#special~chars'
Run Code Online (Sandbox Code Playgroud)

我想从上面的字符串中删除所有特殊的字符和数字只想允许a-z,A-Z其余的字符应该替换为''如何做到这一点?

regex postgresql

25
推荐指数
4
解决办法
5万
查看次数

从PostgreSQL中的枚举列表中选择值

我想从不在数据库中的enumaration中进行选择.

例如,SELECT id FROM my_table返回值1,2,3我想要显示1 -> 'chocolate', 2 -> 'coconut', 3 -> 'pizza'SELECT CASE工作但是太复杂并且难以概述许多值.我想到了类似的东西

SELECT id, array['chocolate','coconut','pizza'][id] FROM my_table
Run Code Online (Sandbox Code Playgroud)

但我无法成功使用数组.有一个简单的解决方案吗?所以这是一个简单的查询,而不是plpgsql脚本或类似的东西.

postgresql postgresql-8.1

9
推荐指数
2
解决办法
4799
查看次数

功能获得正确的一周数

我想创建一个函数来获得正确的一周数.我已经在这里发布一个'本地'解决方案,但显然没有.

我尝试基于这个mysql示例创建funcrtion

这是转换为postgresql的代码:

CREATE OR REPLACE FUNCTION week_num_year(_date date)    
RETURNS integer AS
$BODY$declare 
_year integer;
begin


select date_part('year',_date) into _year; 
return ceil((to_char(_date,'DDD')::integer+(to_char(('01-01-'||_year)::date,'D')::integer%7-7))/7);           


end;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
Run Code Online (Sandbox Code Playgroud)

但它给出了错误的结果,有人可以帮助我吗?

我的配置:PostgreSQL 9.2

postgresql week-number postgresql-9.2

7
推荐指数
2
解决办法
1万
查看次数

为什么php在引用非现有变量时不会抱怨?

我想知道为什么当我们引用一个非现有变量(它是一个普通的变量或数组)时,php不会抱怨,这是否就是这样,或者我还缺少其他东西?例如这段代码

<?php
$t = &$r["er"];
var_dump($r);
?>
Run Code Online (Sandbox Code Playgroud)

不会抛出有关非现有变量的警告.

除了var_dump表明这个:

array(1) { ["er"]=> &NULL }
Run Code Online (Sandbox Code Playgroud)

&NULL是我没想到的,我想我会得到一个简单的NULL.

提前致谢!

php reference

6
推荐指数
1
解决办法
723
查看次数

计算产品库存的加权平均成本

我必须计算产品的库存成本,因此对于每次购买后的每种产品,我必须重新计算加权平均成本

我认为每次进出后都会带给我当前产品的库存:

document_type   document_date   product_id  qty_out qty_in  price       row_num stock_balance
SI              01/01/2014      52          0       600     1037.28     1           600
SI              01/01/2014      53          0       300     1357.38     2           300
LC              03/02/2014      53          100     0       1354.16     3           200
LC              03/02/2014      53          150     0       1355.25     4           50
LC              03/02/2014      52          100     0       1035.26     5           500
LC              03/02/2014      52          200     0       1035.04     6           300
LF              03/02/2014      53          0       1040    1356.44     7           1090
LF              03/02/2014      52          0       1560    1045        8           1860
LC              04/02/2014      52          120 …
Run Code Online (Sandbox Code Playgroud)

sql postgresql recursive-query window-functions postgresql-9.3

6
推荐指数
2
解决办法
3857
查看次数

在 Postgres 中为特定查询设置 work_mem

我正在使用一个委托给 JDBC 驱动程序的库,PostgreSQL有些查询非常复杂,需要更多内存。我不想work_mem为所有查询设置大的东西,只是这个子集。问题是执行以下代码会导致错误:

// pseudo-code for what is happening
String sql = "set work_mem = 102400;";
sql += "SELECT * FROM expensive_query";

ResultSet rs = DatabaseDriver.execute(sql);
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我收到一个错误:

set work_mem = 102400;
Run Code Online (Sandbox Code Playgroud)

不返回任何结果。

这是有效的,pgAdmin因为您可以一次执行多个查询。有没有更好的方法来做到这一点,还是我需要执行任意 SQL 然后提取我想要的结果集?

java sql postgresql memory-management

4
推荐指数
1
解决办法
2883
查看次数

如何使用 PGPASSFILE 环境变量?

我正在使用areca备份程序,并在其中编写了一个脚本来备份 postgre 数据库。我想通过pgpass.conf文件获取密码,但我无法提供它的脚本路径。我该如何使用PGPASSFILE?这是我的脚本(;是分隔符):

-U;postgres;-w;-F;custom;-b;-f;D:\satraAutoBackup\Daily\Saturday\postgresql\geoMolkBackup;geoMolkPortal2
Run Code Online (Sandbox Code Playgroud)

postgresql

4
推荐指数
2
解决办法
2万
查看次数

将几何图形转换为长/纬度

所以在 PostgreSQL 中,我有一堆长/纬度的几何值,其格式如下:

0101000020E610000095B9F94674CF37C09CBF0985083B5040 
Run Code Online (Sandbox Code Playgroud)

因此,在 Postgres 中,我可以进行一个选择查询来格式化所有内容。

SELECT ST_AsText(position_geom)FROM reports;
Run Code Online (Sandbox Code Playgroud)

所以我安装了 postgreSQL 和 PostGIS JDBC 驱动程序eclipse,并认为我可以做类似的事情

rs = stmt.executeQuery("SELECT ST_AsText(*)FROM reports");
while(rs.next()){
String geomVal = rs.getString("position_geom"); 
System.out.println(geomVal);} 
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

function st_astext() does not exist.
Run Code Online (Sandbox Code Playgroud)

我已经导入了所有postGIS扩展,只是想知道是否有人有想法。

java eclipse postgresql postgis

2
推荐指数
1
解决办法
1265
查看次数

JQGrid - OndblClickRow 事件以按所选行选择字段值

我真的很挣扎,似乎无法让它发挥作用。

基本上我有一个预订表,例如

id    bookref    account    fare

1     BR1          101      10.00

2     BR2          202      20.00
Run Code Online (Sandbox Code Playgroud)

我的 Jqgrid 显示了所有这些信息,我想要做的是获取所选行的 bookref 值。我目前的功能是:

    ondblClickRow: function(rowid)
    {
        var grid = $('#bookings');
        var sel_id = grid.jqGrid('getGridParam', 'selrow');
        var myCellData = grid.jqGrid('getCell', sel_id, 'bookref');

        alert(myCellData);

    },
Run Code Online (Sandbox Code Playgroud)

当我双击第一行时,我会返回“BR​​1”,这是正确的,如果我双击任何其他行,我仍然会得到“BR1”,而如果单击第二行,我应该得到“BR2”。

有人可以帮我解决这个问题吗?会非常欣赏它

jquery jqgrid

1
推荐指数
1
解决办法
4万
查看次数