查看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)
这个文件记录在哪里,我错过了吗?谢谢.
在字符串的表格列中,我们可以有数字/特殊字符/空格.我想用空字符替换数字/特殊字符/空格,我看到有功能命名,regexp_replace但如何使用不太多的用户友好帮助例如我想使用以下字符串.
String = 'abc$wanto&toremove#special~chars'
Run Code Online (Sandbox Code Playgroud)
我想从上面的字符串中删除所有特殊的字符和数字只想允许a-z,A-Z其余的字符应该替换为''如何做到这一点?
我想从不在数据库中的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脚本或类似的东西.
我想创建一个函数来获得正确的一周数.我已经在这里发布了一个'本地'解决方案,但显然没有.
我尝试基于这个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
我想知道为什么当我们引用一个非现有变量(它是一个普通的变量或数组)时,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.
提前致谢!
我必须计算产品的库存成本,因此对于每次购买后的每种产品,我必须重新计算加权平均成本。
我认为每次进出后都会带给我当前产品的库存:
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
我正在使用一个委托给 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 然后提取我想要的结果集?
我正在使用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 中,我有一堆长/纬度的几何值,其格式如下:
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扩展,只是想知道是否有人有想法。
我真的很挣扎,似乎无法让它发挥作用。
基本上我有一个预订表,例如
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)
当我双击第一行时,我会返回“BR1”,这是正确的,如果我双击任何其他行,我仍然会得到“BR1”,而如果单击第二行,我应该得到“BR2”。
有人可以帮我解决这个问题吗?会非常欣赏它
postgresql ×8
java ×2
sql ×2
crud ×1
eclipse ×1
jqgrid ×1
jquery ×1
jsonb ×1
php ×1
postgis ×1
reference ×1
regex ×1
sql-update ×1
week-number ×1