使用PostgreSQL注意事项
一、大小写特别敏感
大写字段需要用“”引号(pg字段名使用“”,MySQL字段名使用``)
******表名以及字段名如果是小写但是为关键字,比如name,则也需使用"";
二、分页
limit ${limit} offset ${start}
三、判断条件等号前后字段类型需要一致
类型转换相关函数
https://www.runoob.com/postgresql/postgresql-functions.html
|
函数 |
返回类型 |
描述 |
实例 |
|
to_char(timestamp, text) |
text |
将时间戳转换为字符串 |
to_char(current_timestamp, 'HH12:MI:SS') |
|
to_char(interval, text) |
text |
将时间间隔转换为字符串 |
to_char(interval '15h 2m 12s', 'HH24:MI:SS') |
|
to_char(int, text) |
text |
整型转换为字符串 |
to_char(125, '999') |
|
to_char(double precision, text) |
text |
双精度转换为字符串 |
to_char(125.8::real, '999D9') |
|
to_char(numeric, text) |
text |
数字转换为字符串 |
to_char(-125.8, '999D99S') |
|
to_date(text, text) |
date |
字符串转换为日期 |
to_date('05 Dec 2000', 'DD Mon YYYY') |
|
to_number(text, text) |
numeric |
转换字符串为数字 |
to_number('12,454.8-', '99G999D9S') |
|
to_timestamp(text, text) |
timestamp |
转换为指定的时间格式 time zone convert string to time stamp |
to_timestamp('05 Dec 2000', 'DD Mon YYYY') |
|
to_timestamp(double precision) |
timestamp |
把UNIX纪元转换成时间戳 |
to_timestamp(1284352323) |
四、日期格式转换(格式跟oracle类似)
eg:
时间转字符串:to_char(now(),'yyyy-mm-dd hh24:mi:ss');
字符串转数字:to_number(tenant_id,'99999');
|
占位符 |
描述 |
|
HH |
一天的小时数(01-12) |
|
HH12 |
一天的小时数(01-12) |
|
HH24 |
一天的小时数(00-23) |
|
MI |
分钟(00-59) |
|
SS |
秒(00-59) |
|
MS |
毫秒(000-999) |
|
US |
微秒(000000-999999) |
|
AM |
正午标识(大写) |
|
Y,YYY |
带逗号的年(4和更多位) |
|
YYYY |
年(4和更多位) |
|
YYY |
年的后三位 |
|
YY |
年的后两位 |
|
Y |
年的最后一位 |
|
MONTH |
全长大写月份名(空白填充为9字符) |
|
Month |
全长混合大小写月份名(空白填充为9字符) |
|
month |
全长小写月份名(空白填充为9字符) |
|
MON |
大写缩写月份名(3字符) |
|
Mon |
缩写混合大小写月份名(3字符) |
|
mon |
小写缩写月份名(3字符) |
|
MM |
月份号(01-12) |
|
DAY |
全长大写日期名(空白填充为9字符) |
|
Day |
全长混合大小写日期名(空白填充为9字符) |
|
day |
全长小写日期名(空白填充为9字符) |
|
DY |
缩写大写日期名(3字符) |
|
Dy |
缩写混合大小写日期名(3字符)dy缩写小写日期名(3字符) |
|
DDD |
一年里的日子(001-366) |
|
DD |
一个月里的日子(01-31) |
|
D |
一周里的日子(1-7;周日是1) |
|
W |
一个月里的周数(1-5)(第一周从该月第一天开始) |
|
WW |
一年里的周数(1-53)(第一周从该年的第一天开始) |
转时间格式
to_date( #{req_tm},'yyyy-mm-dd')
select now()::varchar(19);
select cast( '2018-03-22 06:15:16'as timestamp)
|
函数 |
返回类型 |
描述 |
例子 |
|
to_char(timestamp, text) |
text |
把时间戳转换成字串 |
to_char(current_timestamp, 'HH12:MI:SS') |
|
to_char(interval, text) |
text |
把时间间隔转为字串 |
to_char(interval '15h 2m 12s', 'HH24:MI:SS') |
|
to_char(int, text) |
text |
把整数转换成字串 |
to_char(125, '999') |
|
to_char(double precision, text) |
text |
把实数/双精度数转换成字串 |
to_char(125.8::real, '999D9') |
|
to_char(numeric, text) |
text |
把numeric转换成字串 |
to_char(-125.8, '999D99S') |
|
to_date(text, text) |
date |
把字串转换成日期 |
to_date('05 Dec 2000', 'DD Mon YYYY') |
|
to_timestamp(text, text) |
timestamp |
把字串转换成时间戳 |
to_timestamp('05 Dec 2000', 'DD Mon YYYY') |
|
to_timestamp(double) |
timestamp |
把UNIX纪元转换成时间戳 |
to_timestamp(200120400) |
|
to_number(text, text) |
numeric |
把字串转换成numeric |
to_number('12,454.8-', '99G999D9S') |
五、实现MySQL中的GROUP_CONCAT()方法
使用:array_to_string(GROUP_CONCAT(DISTINCT cgu.group_id),',')
创建自定义聚合函数
CREATE AGGREGATE group_concat(anyelement)
(
sfunc = array_append, -- 每行的操作函数,将本行append到数组里
stype = anyarray, -- 聚集后返回数组类型
initcond = '{}' -- 初始化空数组
);
六、null替换
coalesce(pmodule_id,'')
七、模糊查询
SELECT * FROM public."user"
WHERE UPPER(username) LIKE UPPER('%' || #{username} || '%');
SELECT * FROM public."user"
WHERE CONCAT(username) LIKE CONCAT('%', #{username}, '%');
SELECT * FROM public."user"
WHERE username LIKE '%' || #{username} || '%';
八、实现MySQL中的主键自增功能
为字段添加自增功能时需要创建序列
--创建序列字段自增
CREATE SEQUENCE imp_item_status_map_seq --序列名
START WITH 200 --起始值
INCREMENT BY 1 --增量
NO MINVALUE
NO MAXVALUE
CACHE 1;
--删除序列
DROP SEQUENCE imp_item_status_map_seq cascade;
--将表中字段关联序列
--mapping_id 需要关联表中的字段
alter table imp_item_status_map alter column mapping_id set default nextval('imp_item_status_map_seq');
九、
--创建类似UUID()函数方法
create or replace function random_string(integer)
returns text as
$body$
select array_to_string(array(select substring('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' FROM (ceil(random()*62))::int FOR 1) FROM generate_series(1, $1)), '');
$body$
language sql volatile;
使用PostgreSQL注意事项的更多相关文章
- Gogs官方帮助文档
环境要求 数据库(选择以下一项): MySQL:版本 >= 5.7 PostgreSQL MSSQL TiDB(实验性支持,使用 MySQL 协议连接) 或者 什么都不安装 直接使用 SQLit ...
- postgresql Streaming Replication监控与注意事项
一监控Streaming Replication集群 1 pg_stat_replication视图(主库端执行) pid Wal sender process的进程ID usesysid 执行流复制 ...
- Entity Framework 6连接Postgresql、SQLite、LocalDB的注意事项和配置文件
Postgresql Postgresql支持Code First的方式自动生成表,不过默认的模式是dbo而不是public,而且还可以自动生成自增主键. <?xml version=" ...
- postgresql文档生成注意事项
如果要生成中文版的postgresql,目前我所知道的方法见我的一篇博客http://www.cnblogs.com/codeblock/p/4812445.html 里面有详细的介绍,但是生成的文档 ...
- 【数据库】postgresql数据库创建自增序列id的注意事项
1.创建一张表 CREATE TABLE "public"."tt" ( "name" varchar(128), "status ...
- 将数据从MySQL迁移到Oracle的注意事项
将数据从MySQL迁移到Oracle的注意事项1.自动增长的数据类型处理MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值.ORACLE没有自动增长的数据类型,需要建立一个自动 ...
- Shp数据批量导入Postgresql工具的原理和设计
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 在制作整体的开源工具箱产品中,数据入库是一个重要的环节.虽然 ...
- SQL Server 导出数据到 PostgreSQL
乘着倒数据这会儿,把方法记录一下 需求:因为数据迁移,需要将SQL Server 2012中的数据库导入到PostgreSQL 数据库中 思路:创建一个空的数据库,便于导入数据.下载PostgreSQ ...
- postgresql copy命令介绍
COPY 命令可以快速的导入数据到postgresql数据库中,文件格式类似TXT.CVS之类.适合批量导入数据,速度比较快.注意COPY只能用于表,不能用于视图. COPY 命令里面的文件必须是由服 ...
随机推荐
- Hellc
[题目描述] 作为一个生活散漫的人,小 Z 每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小 Z 再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小 Z 把这 ...
- MHRD_Guide
@(Steam蒸汽动力)[MHRD|Game|How To] [CH]游戏解决方案 1.解决方案将作为完整的代码呈现,部分结决方案将有理论分析或图解. 2.根据记录板判断,解决方案远非理想. 3.慎重 ...
- C#使用正则表达式获取HTML代码中a标签里包含指定后缀的href的值
//C#使用正则表达式获取HTML代码中a标签里包含指定后缀的href的值,表达式如下: Regex regImg = new Regex(@"(?is)<a[^>]*?href ...
- C:数组习题
与字符串处理有关的函数: 头文件:<stdio.h> gets().puts() 头文件:<string.h> (1).字符串长度测量函数 :strlen(字符数组名) ...
- CentOS 7 国内源配置
CentOS 7 国内源配置 1. 备份自带源 # 首先要确认你有 wget 命令, 并且连着网 # cd /etc/yum.repos.d/ # mkdir repo # mv *.repo rep ...
- oa办公系统快速开发工具,助力企业优化升级
随着互联网的快速发展.信息化 IT 技术的不断进步.移动互联新技术的兴起,不管是大的集团企业还是中小型企业,纸质化的办公模式已不能满足现有需求,构建oa平台,为员工提供高效的办公环境尤其重要. 我们先 ...
- JDBC阶段总结
一.JDBC的概念:Java DataBase Connectivity用Java语言操作数据库(通过SQL)二.数据库的驱动和JDBC的关系三.编写JDBC的步骤: a.注册驱动 b.建立与数据库的 ...
- C# 客户端内存优化分析
背景概述 C# 开发客户端系统的时候,.net 框架本身就比较消耗内存资源,特别是xp 这种老爷机内存配置不是很高的电脑上运行,所以就需要进行内存上的优化,才能流畅的在哪些低端电脑上运行. 想要对C# ...
- Linux centos7.0 配置防火墙及开放端口
现在防火墙有两种服务1.service firewalld 2.service iptables 一.就firewalld来说查看开放的端口 netstat -anp 查询防火墙状态 servi ...
- js实现文字头像的生成
原文地址:https://www.phyer.cn/article/9277.欢迎大家访问我的博客(●ˇ∀ˇ●) 使用canvas画出文字就好啦 function gen_text_img(size, ...