学习笔记,记录下项目中有趣的地方,从现在开始
相关问题和解决办法(个人记录)
示例都是在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在某些场景下可以解决你的问题
本文分享了在使用SQL进行数据查询时的一些实用技巧,包括如何利用any关键字实现多值查询、如何进行日期范围筛选、如何处理类型转换问题以及如何正确使用聚合函数等。
4232

被折叠的 条评论
为什么被折叠?



