postgresql 一些操作备忘

1、left join 或者right join

数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。

2、处理json

官方解释地址 https://www.postgresql.org/docs/9.5/static/functions-json.html

->    :是获取json对象

-->   : 是获取的字符串

#>   : 根据路径获得json对象

#>> :根据路径获得字符串

举个栗子

有个json字符串{"a":{"b":"c"}}

select ‘{"a":{"b":"c"}}‘::json ->‘a‘->>‘b‘ as result

返回结果

c

如果我获取a的时候用的是->>,也就是执行这么条语句select ‘{"a":{"b":"c"}}‘::json ->>‘a‘->>‘b‘ as result那么就会报错

执行信息:

[SQL]select ‘{"a":{"b":"c"}}‘::json ->>‘a‘->>‘b‘ as result

[Err] 错误:  操作符不存在: text ->> unknown
LINE 1: select ‘{"a":{"b":"c"}}‘::json ->>‘a‘->>‘b‘ as result
                                             ^
HINT:  没有匹配指定名称和参数类型的操作符. 您也许需要增加明确的类型转换.

报错的原因呢就是就是 ->>返回的是text不是json对象所以后面的->>郁闷了就报错了。

那我如果就想这么写怎么办呢?

简单,把text转成json不就行了

select (‘{"a":{"b":"c"}}‘::json ->>‘a‘)::json->>‘b‘ as result

对了,这里的()是需要注意的如果::json之前的东西没用被括号起来那么会报错的

select ‘{"a":{"b":"c"}}‘::json ->>‘a‘::json->>‘b‘ as result

[SQL]select ‘{"a":{"b":"c"}}‘::json ->>‘a‘::json->>‘b‘ as result

[Err] 错误:  json类型使用了无效的输入语法
LINE 1: select ‘{"a":{"b":"c"}}‘::json ->>‘a‘::json->>‘b‘ as result
                                          ^
DETAIL:  令牌 "a" 无效.
CONTEXT:  JSON数据, 行 1: a

由此可以推测::优先级较高

3、

时间: 2024-11-04 19:48:04

postgresql 一些操作备忘的相关文章

JqGrid相关操作备忘 方法列表

JqGrid相关操作备忘 方法列表 1.获得当前列表行数:$("#gridid").getGridParam("reccount"); 2.获取选中行数据(json):$("#gridid").jqGrid('getRowData', id); 3.刷新列表:$(refreshSelector).jqGrid('setGridParam', { url: ''), postData: ''}).trigger('reloadGrid'); 4.选

DOS命令批量重命名文件配合Excel 操作备忘

批量取得文件夹下文件名 有时候文件夹下有好多图片什么的,文件名称不是统一的格式,想统一一下,于是google找到以下方法,进入要操作的目录,按住shift键的同时,单击鼠标右键,你会看到在此处打开命令行窗口的字样点击下就进入 了DOS操作窗口了 win键+r进入命令行,输入以下命令, dir /s/b>文件名随便打.bat      这个是取得全路径文件名 dir /b>文件名随便打.bat 这个是只取得当前目录下的文件名 于是在当前目录下生成了 再用记事本打开 你相要的名称.bat 把它的内

matlab常用操作备忘

(1)管理命令和函数 addpath  :添加目录到MATLAB搜索路径 doc      :在Web浏览器上现实HTML文档 help     :显示Matlab命令和M文件的在线帮助 helpwin helpdesk :help 兄弟几个 lookfor  :在基于Matlab搜索路径的所有M文件中搜索关键字 partialpath:部分路径名      8*) path     :所有关于路径名的处理 pathtool :一个不错的窗口路径处理界面 rmpath   :删除搜索路径中指定目

C++_一些操作备忘

String类的操作 STL一些容器的操作:stack.map.vector ==================================================== 链接: C++字符串string类常用操作详解(一)[初始化.遍历.连接]:https://www.cnblogs.com/qiumingcheng/p/7872545.html C++标准模板库STL之Stack:https://www.cnblogs.com/drq1/p/9699475.html 原文地址:h

.net MVC内置js验证 jquery.validate.unobtrusive.js重置验证操作(备忘,找了很多次了)

1 (function ($) { 2 $.validator.unobtrusive.parseDynamicContent = function (selector) { 3 //use the normal unobstrusive.parse method 4 //$.validator.unobtrusive.parse(selector); changed this line with 5 6 $(selector).find('*[data-val = true]').each(f

eclipse如何修改dynamic web module version;——eclipse操作备忘

1.eclipse如何修改dynamic web module version 一.修改工程属性: 右键eclipse的工程,选择属性,再选择Project Facets里面中选择Dynamic Web Module ,将3.0修改为2.5,可能会提示如下信息:Cannot change version of project facet Dynamic Web Module to 2.5 这样表示修改不了,然后采用第二种方法. 二.修改配置文件:找到工程项目的硬盘目录,打开项目下的 .setti

vim visual操作备忘

visual模式下: jkl选中行 "+y 复制选中行 版权声明:本文为博主原创文章,未经博主允许不得转载.

OpenCV相关基础操作备忘

1.循环读取N张图片进行处理 int i= 1; while (i<= 10) { string imageName = format("%d.jpg", i); image = imread(imageName, IMREAD_GRAYSCALE); namedWindow("Gray_image", CV_WINDOW_AUTOSIZE); imshow("Gray_image", I); i++; while (1){ if (wai

mongo操作备忘

#查看collection内 某个字段条目数 db.dictionary_system.find({"name":"xxx"}).count() #清空某个collection的字段,很危险,很危险,很危险,不要执行,不要执行,不要执行!!!!他会把有name的都干掉!!!!删除用下面的remove db.dictionary_system.update({},{$unset:{'name':'xxx.xxx'}},false, true) #查看某个字段在coll