PostgreSQL个人使用记录

本文分享了在使用SQL进行数据查询时的一些实用技巧,包括如何利用any关键字实现多值查询、如何进行日期范围筛选、如何处理类型转换问题以及如何正确使用聚合函数等。

学习笔记,记录下项目中有趣的地方,从现在开始

相关问题和解决办法(个人记录)

示例都是在mapper.xml的写法

1.普通字段范围内查询

多条件查询时其中一个条件是多个值,可以使用any
any:满足数组中任意一个即可
相对的也有all:全部都满足才返回true

string_to_array: 把字符串根据某个字符分割成一个数组
双冒号” :: “ : 强转

xxxx = any(string_to_array(#{inPoStatus},',')::int[])

结合起来就是把用逗号拼接起来的字符串根据" ,"分割成一个数组并且强转成一个int数组,然后查询是否有等于其中任意一个值的数据

2.日期范围查询

这里记录的是timestamp类型的

xxxx >= to_timestamp(#{startTime},'YYYY-MM-DD HH24:MI:SS')
xxxx <= to_timestamp(#{endTime},'YYYY-MM-DD HH24:MI:SS')

一般情况下接收的日期都是字符串类型的,所以我们需要格式化一下,注意HH后面要加24指定是24小时制

3.类型转换

举例:有时候我们controller–>service–>dao(mapper)–>sql之间传参的时候会用map,这时候有可能会发生不识别类型的情况

cast(#{deleteFlg} as INTEGER)

这时候使用cast转换一下即可

4.关于聚合函数必须搭配GROUP BY
sum(xx) over(PARTITION BY id) as xxx

聚合函数配合over在某些场景下可以解决你的问题

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值