sql语句的使用经验 postgresql
查找指定字段为空或不为空
查询数据库中指定字段为空的行数据:
select * from tablename where columnName = ''; 字符串类型可以用 '' ,也可以用Null
select * from tablename where is Null(columnName); 可以用来指定int类型
查询不为空数据:
select * from tablename where columnName <> ''; <>不等于
select * from tablename where columnName != '';
将查询的数据插入新的表
insert into [表名] select * from [表名] where ...
数据库内字段数据处理:
一、向原有的数据添加数据
update [表名] set column = concat("str",columnName(需要添加数据的字段名));
二、合并列数据
1.先新建一个字段用来存放合并后的数据
2.用concat合并,并赋给新建的列
alter table [表名] add column [字段名] [类型];
update [表名] set [新建的字段] = concat([原有字段1], [原有字段2]);
两种表复制:insert into from和select into from
一般insert into [table1] select,用于将select选择的数据插入到另一张表中
select [字段1[,字段2...]] into [table] from ,用于将选择的数据插入新表中
regexp_matches的用法以及取出数组中的值
函数:regexp_matches(string text, pattern text [, flags text])
说明:Return all captured substrings resulting from matching a POSIX regular expression against the string. See Section 9.7.3 for more information. 对字符串按正则表达式进行匹配,如果存在则会在结果数组中表示出来
例子:regexp_matches('foobarbequebaz', '(bar)(beque)') = {bar,beque}
但是如何取出数组中的值呢?
(select regexp_matches())[1]
如果直接将数组返回赋给一个值则会出现出错?
即返回多行的函数的错误
update xzcf set 处罚类别=regexp_matches(处罚类别, '.{2}') where id=1;
报错: [Err] 错误: set-returning functions are not allowed in UPDATE
原因:regexp_matches()会返回一个数组(多行)
对于返回多行的函数,如果在where条件中执行过滤,会返回如下错误。
ERROR: 0A000: set-returning functions are not allowed in WHERE
如果要创建基于SRF函数(即返回多行的函数)的表达式索引,会报如下错误:
ERROR: 0A000: set-returning functions are not allowed in index expressions
一行变多行
方法一、 unnest(数组,分隔符)
select [col1],unnest(string_to_array([col2],'分隔符')) from [table];
方法二、regexp_split_to_table(字符串,分隔符)
select [col1],regexp_split_to_table([col2],'分隔符') from [table];
sql语句的使用经验 postgresql的更多相关文章
- postgresql定位分析消耗CPU高的SQL语句
第一步:使用TOP命令查看占用CPU高的postgresql进程,并获取该进程的ID号,如图该id号为3640 第二步:切换到postgres用户,并且psql连接到数据库,执行如下查询语句 SELE ...
- postgresql中终止正在执行的SQL语句
在Linux系统中可以使用kill [pid]的方式强制删除进程,但对于修改数据表的语句来说,这样可能导致postgresql进入recovery mode,这样会导致锁表. Postgresql的运 ...
- PostgreSQL 慢查询SQL语句跟踪
示例:启用 SQL 跟踪PostgreSQL 日志支持的输出格式有 stderr(默认), csvlog , syslog 一般的错误跟踪,只需在配置文件 [postgresql.conf]简单设置几 ...
- PostgreSql中如何kill掉正在执行的sql语句
虽然可以使用 kill -9 来强制删除用户进程,但是不建议这么去做. 因为:对于执行update的语句来说,kill掉进程,可能会导致Postgres进入到recovery mode 而在recov ...
- 数据库索引和SQL语句使用经验
1.如果检索数据量超过30%的表中记录数,使用索引将没有显著的效率提高 2.在特定情况下,使用索引也许会比全表扫描慢,但这是同一个数量级上的差距:而通常情况下,使用索引比全表扫描要快几倍乃至几千倍! ...
- postgresql Kill掉正在执行的SQL语句
kill方式是杀掉进程,但是有时候需要取消相关SQL语句,采用以下方式 一.查看哪些SQL语句正在执行 语句如下:SELECT datname,procpid,query_start, current ...
- 缓存策略 半自动化就是mybaitis只支持数据库查出的数据映射到pojo类上,而实体到数据库的映射需要自己编写sql语句实现,相较于hibernate这种完全自动化的框架我更喜欢mybatis
springboot入门(三)-- springboot集成mybatis及mybatis generator工具使用 - FoolFox - CSDN博客 https://blog.csdn.net ...
- Hibernate SQL实际sql语句监控- p6spy+hibernate+proxool 设置
由于ORM工具的缘故,我们调试程序的时候远没有直接在程序里直接写个string的SQL简单,想当年查个sql是有多么的幸福,一行sql = "select * from ..."找 ...
- 标准sql语句,学习
标准SQL语句总结标准SQL语句总结,标准SQL语言基本上适用于下面所列出的数据库软件 -------------------------------------------------------- ...
随机推荐
- 区间和序列上的dp
区间上的dp状态设计最基本的形式: \(F[i]\)表示以i结尾的最优值或方案数. \(F[i][k]\)表示以i结尾附加信息为k的最优值或方案数. 当然可以有多维附加信息. 转移的话往往是枚举上一个 ...
- python3的base64编解码
使用python3的base64编解码实现字符串的简易加密解密 引言: 在一些项目中,接口的报文是通过base64加密传输的,所以在进行接口自动化时,需要对所传的参数进行base64编码,对拿到的响应 ...
- C++新型强制类型转换。
C++强制类型转换分为4个不同的类型. 1.static_cast -用作基本类型转换. -不能用于基本类型指针转换. -可以用于有继承关系对象之间的转换和类指针之间的转换. #include < ...
- win10删除文件夹时需要管理员授权或拒绝访问(无权访问权限修改)
win10 用户:我自己就是电脑主人,凭啥我没有自己电脑文件夹的权限? 微软:对不起,您是电脑硬件的主人,但是电脑系统的主人是我!你只不过是个用户而已. win10 用户:我cao你...[哔-] 对 ...
- Linux知识补课
Linux补课 已经将开发环境转Linux了(当然用的是ubuntu,图像界面还是舒服一点,支持也多),不上QQ和微信的话用的还是挺舒服的,但是无奈基础欠账太多,这里赶快补一下 Linux和Unix的 ...
- 51nod 2589 快速讨伐
51nod 如果不考虑升级操作,只有买装备操作和打怪操作,那么首先一定要先买装备,然后可以打死1级的怪,这些怪被打死的时间只要在第一次买装备后面好了,因为现在总操作是\(n+\sum a_i\)个,所 ...
- 在springboot中集成mybatis开发
在springboot中利用mybatis框架进行开发需要集成mybatis才能进行开发,那么如何在springboot中集成mybatis呢?按照以下几个步骤就可以实现springboot集成myb ...
- keepalived的工作原理
keepalived的工作原理 首先简单介绍一下vrrp协议 vrrp协议 用来实现路由器冗余的协议: Vrrp协议是为了消除在静态缺省路由环境下路由器单点故障引起的网络失效而设计的主备模式的协议,使 ...
- 解决deepin没有ll等命令的办法
编辑~/.bashrc, 添加alias 如下 vim ~/.bashrc 设置别名. 添加如下行 alias ll='ls -alF' alias la='ls -A' alias vi='vim' ...
- Linux(Centos7)下redis5缓存服务集群分布式搭建
注意:可以查看Redis官网查看集群搭建方式,连接如下 https://redis.io/topics/cluster-tutorial 集群中应该至少有三个节点,每个节点有一备份节点.需要6台服务器 ...