PGSQL实现判断一个空值字段,并将NULL值修改为其它值
在使用pgsql时,想要取到某些字段不为空或者为空的数据,可以用以下方法:
1、不为空
Select * From table Where id<>'' Select * From table Where id!=''
2、为空
Select * From table Where id='' Select * From table Where ISNULL(id)
如果字段是类型是字符串,用 id=''可以;如果是int型则用 ISNULL
如果需要将空值设置为其它值:
select COALESCE(b.price, 其它值) as price from fruit_sale b
除此之外,一般会用到在pgsql中设置id自增
工具:navcicat
函数
uuid_generate_v4()
如下:
效果图:
pgsql有时候在表的操作上会出现比较慢的情况,需要点耐心
补充:pgsql将为NULL或空字符串的字段替换为指定默认值,格式化时间戳,用指定分隔符截取字符串等操作
一、将为NULL或空字符串的字段替换为指定默认值
update 表名 set 字段 = COALESCE(NULLIF(trim(字段名), ''), '默认值');
用例:
select COALESCE(NULLIF(trim(email), ''), '无') from user
解释:
null
表示缺失的值, ‘' " "表示空值
null
参与的表达式运算都返回null
is null
判断是null
is not null
判断非null
nullif(value1, value2)
如果value1 == value2 返回null
coalesce(arg1, arg2, …)
返回第一个 不为null的值
二、格式化时间戳
to_char(字段名,'yyyy-MM-dd hh24:MI:ss')
用例:
select to_char(endtime,'yyyy-MM-dd hh24:MI:ss') from user
三、用指定分隔符截取字符串
split_part(字段名,'分隔符', 位置)
用例:截取 path = "/业务系统/未分组/qwqw" 中的未分组; ps:截取位置为1/2/3/4
select split_part(path,'/', 3) FROM user WHERE id = '111'
四、将一个角色的多个权限用逗号连接合并到一行
SELECT string_agg(a.authname,',') authname, r.id FROM role r, auth a WHERE a.auth = r.id GROUP BY r.id
结果
五、将字段中的特定值转换为指定默认值
CASE WHEN m.status = 'del' THEN '删除' ELSE '正常' END
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。
相关推荐
-
pgsql锁表后kill进程的操作
如下: select * from pg_stat_activity 查询系统中的进程 如果怀疑哪张表被锁了,可以执行如下sql: select oid from pg_class where relname='table_name' 然后将拿到的oid 放入如下sql执行: select pg_cancel_backend('oid '):: 搞定! 此sql是kill作用 补充:PostgreSQL - 如何杀死被锁死的进程 前言 在一次系统迭代后用户投诉说无法成功登陆系统,经过测试重现和日
-
PGSQL 实现把字符串转换成double类型(to_number())
今天写sql的时候,发现PG里有一张表的面积字段竟然设置成字符串类型,这样就不能统计使用sum函数了,所以需要将字符串转换成double类型再相加. select sum(to_number(mj,9999.99)) as amountmj from table group by area 其中9999.99就是不管是mj字段的值还是amountmj的值不能超过9999.99,且保留两位小数. 补充:postgresql科学计数法转浮点或字符串 科学计数法转浮点 select '2.93985E
-
pgsql 实现用户自定义表结构信息获取
1. 获取表中普通信息:如字段名,字段类型等 SELECT column_name, data_type, ordinal_position, is_nullable FROM information_schema."columns" WHERE "table_name"='TABLE-NAME' -- 将 'TABLE-NAME' 换成自己的表 2.获取所有的表和视图 SELECT table_name, table_type FROM INFORMATION_S
-
pgsql批量修改sequences的start方式
修改为指定值 DO $$DECLARE r record; BEGIN FOR r IN SELECT sequence_name FROM information_schema."sequences" LOOP EXECUTE 'ALTER SEQUENCE '|| r.sequence_name ||' restart WITH 10000'; END LOOP; END$$; 根据表的id修改 DO $$ DECLARE r record; start_value integer
-
pgsql添加自增序列、设置表某个字段自增操作
添加自增序列 CREATE SEQUENCE 表名_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; 设置表某个字段自增 alter table表名 alter column id set default nextval('表名_id_seq'); 从当前最大id依次递增 select setval('表名_id_seq',(select max(id) from 同一个表名)); 大写字符的表需要加双引号.例
-
PGSQL实现判断一个空值字段,并将NULL值修改为其它值
在使用pgsql时,想要取到某些字段不为空或者为空的数据,可以用以下方法: 1.不为空 Select * From table Where id<>'' Select * From table Where id!='' 2.为空 Select * From table Where id='' Select * From table Where ISNULL(id) 如果字段是类型是字符串,用 id=''可以;如果是int型则用 ISNULL 如果需要将空值设置为其它值: select COAL
-
C语言中判断一个char*是不是utf8编码
C语言中判断一个char*是不是utf8编码 里我修改了一下, 纯ASCII编码的字符串也返回true, 因为UTF8和ASCII兼容 实例代码: int utf8_check(const char* str, size_t length) { size_t i; int nBytes; unsigned char chr; i = 0; nBytes = 0; while (i < length) { chr = *(str + i); if (nBytes == 0) { //计算字节数 i
-
golang中使用proto3协议导致的空值字段不显示的问题处理方案
最近在使用grpc协议的时候,由于采用的是Proto3协议,在查找记录信息的时候,由于某些字段会有默认空值,导致在通过协议调用后,返回的json结构中并没有这些字段,虽然作为前端使用没有太大的问题,但是在更多的使用场景中,我们更需要知道该服务返回的确切字段,以便于能够做相应处理,尤其是编译型语言 具体的使用出现场景如下 type MemberResponse struct { Id int32 `json "id"` Phone string `json "phone&quo
-
python判断一个变量是否已经设置的方法
python判断一个变量是否已经设置的方法:可以使用locals()函数来进行判断. locals()函数会以字典类型返回当前位置的全部局部变量,具体使用方法如:['testvar' in locals().keys()]. 方法如下: 第一种方法使用内置函数locals(): locals():获取已定义对象字典 'testvar' in locals().keys() 第二种方法使用内置函数dir(): dir():获取已定义对象列表 'testvar' in dir() 第
-
mybatis返回map类型数据空值字段不显示的解决方案
目录 mybatis返回map数据空值字段不显示 查询sql添加每个字段的判断空 ResultType利用实体返回 springMVC+mybatis查询数据 mybatis返回map空值未返回字段 mybatis开启CallSettersOnNulls mybatis返回map数据空值字段不显示 查询sql添加每个字段的判断空 IFNULL(rate,'') as rate ResultType利用实体返回 不用map springMVC+mybatis查询数据 返回resultType=”m
-
手写一个@Valid字段校验器的示例代码
上次给大家讲述了 Springboot 中的 @Valid 注解 和 @Validated 注解的详细用法: 详解Spring中@Valid和@Validated注解用法 当我们用上面这两个注解的时候,需要首先在对应的字段上打上规则注解,类似如下. @Data public class Employee { /** 姓名 */ @NotBlank(message = "请输入名称") @Length(message = "名称不能超过个 {max} 字符", max
-
向数据报表添加一个合计字段
因此,一个合计字段与 Function 控件相似,因为两者都是在报表生成时计算.但是有一些不同点:Function 控件只能被放置在分组注脚中,而一个合计字段可以被放置在数据报表设计器的任何部分,除去报表标头/注脚和页标头部分. 另一个不同在于两个字段创建的方式:尽管 Function 控件是数据报表设计器的一个特色,合计字段是数据环境设计器的一个特色.向报表添加一个合计字段的步骤是: 在数据环境设计器中创建一个合计字段. 从数据环境设计器中,把合计字段拖到数据报表设计器上. 作为一个示例,下面
-
MySQL命令行中给表添加一个字段(字段名、是否为空、默认值)
先看一下最简单的例子,在test中,添加一个字段,字段名为birth,类型为date类型. mysql> alter table test add column birth date; Query OK, 0 rows affected (0.36 sec) Records: 0 Duplicates: 0 Warnings: 0 查询一下数据,看看结果: mysql> select * from test; +------+--------+-----------------------
-
js判断一个字符串是否包含一个子串的方法
本文实例讲述了js判断一个字符串是否包含一个子串的方法.分享给大家供大家参考.具体如下: 在我们前端日常开发中,经常会遇到判断一个字符串中是否包含某个子串,这里我们将去探究一些解决此种需求的方法以及正确的使用它们.理想情况下,我们要找的是一个能匹配我们的目的(if x contains y)的方法,并返回true或false. 一.String.prototype.indexOf和String.prototype.lastIndexOf 这两个方法,可能是我们最容易想到的,如果包含子串,则返回大
-
利用正则表达式判断一个给定的字符是否是回文
如果给定的字符串是回文,返回true,反之,返回false. 如果一个字符串忽略标点符号.大小写和空格,正着读和反着读一模一样,那么这个字符串就是palindrome(回文). 注意你需要去掉字符串多余的标点符号和空格,然后把字符串转化成小写来验证此字符串是否为回文. 函数参数的值可以为"racecar","RaceCar"和"race CAR". 关键代码: 去掉字符串中的标点符号和空白格.可以用str.replace()+正则表达式匹配. v
随机推荐
- JavaScript事件 "事件对象"的注意要点
- 原生JavaScript生成GUID的实现示例
- 正则表达式验证IPV4地址功能实例分析
- Shell脚本实现简单分割字符串
- Bootstrap 3 按钮标签实例代码
- javascript中返回顶部按钮的实现
- 微信小程序的动画效果详解
- c++连接mysql数据库的两种方法(ADO连接和mysql api连接)
- Zend Framework教程之Zend_Config_Ini用法分析
- C# 格式化字符首字母大写的方法
- C#基础知识系列八const和readonly关键字详细介绍
- java实现多线程的两种方式继承Thread类和实现Runnable接口的方法
- 一个报数游戏js版(约瑟夫环问题)
- 浅谈Nodejs观察者模式
- 解决vim语法高亮不起作用的方法
- IIS7中Ajax.AjaxMethod无效的原因及解决方法
- Win10 64位安装个人版SQL2000图文教程
- Jquery实现地铁线路指示灯提示牌效果的方法
- C#实现将日志写入文本文件的方法
- Visual Studio 2010配置OpenCV的方法