常用sql整理

1、if test 函数

<if test="name == 10">  
date= now()  
</if>

2、COALESCE 函数 表示如果查询结果为空,用其他数值代替

COALESCE(money,0)

3、round 函数
参数 大于 0,则四舍五入到指定的小数位。
参数等于 0,则四舍五入到最接近的整数。
参数 小于 0,则在小数点左侧进行四舍五入。
如果round函数只有参数number,等同于digits 等于 0。
round(3.1415926,2)=3.14;
select round(193,-2)from dual; 200
4、case .....when ....then .....when.....then .....else 如果。。。就。。。
5、date 函数和to_char 都可以用户转化后比较日期

date(p_begin_date)=date(now())    
to_char(p_begin_date,'yyyyMMdd')='20180817'

6、插入一条记录,验证一个或这几个值是否重复,不重复才插入

INSERT INTO t_settle_log(s_type,s_create_time)select #{type}, #{createTime}from dual where not exists
    (select s_type,s_create_time from t_settle_log 
    where s_type = #{type} and to_char(s_create_time,'yyyyMMdd') = #{details})

说明:s_type,s_create_time 是要添加的字段 后面的查询 dual表 是表示筛选条件
如果数据库没有dual 视图 就手动添加
CREATE OR REPLACE VIEW dual AS
SELECT 'X'::character varying AS dummy;

7、cast 函数 ,转化数据类型

cast(u_id as character varying(20)) as giveid

8、concat 函数 讲两个字符串拼接起来

concat(to_char((now()::date)+tv.v_voucher_period,'yyyy-mm-dd'),'23:59:59')::timestamp as duetime,

9、插入一条数据返回数据主键 或指定字段,返回值在对象取即可

//service
febActivityDao.insertGift(giftMap); 
Integer giftId = Integer.valueOf(giftMap.get("g_id").toString());
//dao
    void insertGift(Map<String, Object> giftMap);
// xml
<insert id="insertGift" parameterType="java.util.Map" useGeneratedKeys="true"  keyColumn="g_id" keyProperty="g_id">
    INSERT INTO t_gift(...)values(.....)
</insert>

10、excile 生成sql相关
--代金券
=CONCATENATE("insert into t_active_prize_give (a_active_id,a_prize_user_id,a_prize_give_id,a_prize_give_cause,a_prize_give_way,a_prize_give_time,a_prize_give_type,a_prize_is_used,a_voucher_id,a_voucher_over_time,a_voucher_use_status,a_red_value)values ('",G2,"', '",B2,"', 'SDFF20171030', '",H2,"', 0, now(), 1, 0, (select v_id from t_voucher where v_voucher_code='",F2,"'), concat(to_char((now()::date)+30,'yyyy-mm-dd'),' 23:59:59')::timestamp, 1, '",E2,"');")
=CONCATENATE("insert into t_voucher (v_voucher_code,v_voucher_value,v_voucher_period,v_voucher_invest_platform,v_voucher_product,v_voucher_least_amount,v_voucher_least_period,v_end_time,v_voucher_used)values ( '",K2,"', '",C2,"', '",D2,"', 0, 2, '",G2,"', '",I2,"', '",J2,"', 0);")
--到期红包
=CONCATENATE("insert into t_active_prize_give(a_prize_user_id,a_prize_give_id,a_prize_give_way,a_prize_give_time,a_prize_give_type,a_red_value,a_invest_money,a_invest_deadline,a_product_name, a_audit_status,a_redmoney_duetime,a_audit_time,a_active_id)values('",A2,"','",B2,"',1,now(),10,'",C2,"','",D2,"','",E2,"',2,1,'",G2,"',now(),'",H2,"');")
时间函数:=TEXT(F2,"yyyy-mm-dd HH:mm:ss")

--用户id|投资编号|红包金额|投资金额|投资期限|到期时间|活动id

--限制活动id、投资编号
=CONCATENATE("insert into t_active_prize_give(a_prize_user_id,a_prize_give_id,a_prize_give_way,a_prize_give_time,a_prize_give_type,a_red_value,a_invest_money,a_invest_deadline,a_product_name, a_audit_status,a_redmoney_duetime,a_audit_time,a_active_id)select '",A2,"','",B2,"',1,now(),10,'",C2,"','",D2,"','",E2,"',2,1,'",G2,"',now(),'",H2,"' from dual where not exists(select a_prize_give_id,a_active_id from t_active_prize_give where a_prize_give_id ='",B2,"' and a_active_id='",H2,"');")

11、trunc(number,0) 函数 的用法
/**************日期********************/
1.select trunc(sysdate) from dual --2011-3-18 今天的日期为2011-3-18
2.select trunc(sysdate, 'mm') from dual --2011-3-1 返回当月第一天.
3.select trunc(sysdate,'yy') from dual --2011-1-1 返回当年第一天
4.select trunc(sysdate,'dd') from dual --2011-3-18 返回当前年月日
5.select trunc(sysdate,'yyyy') from dual --2011-1-1 返回当年第一天
6.select trunc(sysdate,'d') from dual --2011-3-13 (星期天)返回当前星期的第一天
7.select trunc(sysdate, 'hh') from dual --2011-3-18 14:00:00 当前时间为14:41
8.select trunc(sysdate, 'mi') from dual --2011-3-18 14:41:00 TRUNC()函数没有秒的精确
/***************数字********************/
/*
TRUNC(number,num_digits)
Number 需要截尾取整的数字。
Num_digits 用于指定取整精度的数字。Num_digits 的默认值为 0。
TRUNC()函数截取时不进行四舍五入
*/
9.select trunc(123.458) from dual --123
10.select trunc(123.458,0) from dual --123
11.select trunc(123.458,1) from dual --123.4
12.select trunc(123.458,-1) from dual --120
13.select trunc(123.458,-4) from dual --0
14.select trunc(123.458,4) from dual --123.458
15.select trunc(123) from dual --123
16.select trunc(123,1) from dual --123
17.select trunc(123,-1) from dual --120
12、exists 和 in 用法
exists:
强调的是是否有返回集,不需知道具体返回的是什么,比如:

      SELECT * FROM customer
     WHERE
     not EXISTS (SELECT  0  from customer_goods
                 WHERE
            customer_id = 1
                          )

只要exists引导的子句有结果集返回,这个条件就算成立。这个返回的字段始终是0,改成1,则始终返回的是1,所以exists不
在乎返回的是什么内容,只在乎是否有结果集返回。
exists 和in 的区别
这二者最大的区别,是使用in只能返回一个字段值

     SELECT * FROM  customer c
     WHERE
     c.id not in (SELECT customer_id FROM customer_goods
              WHERE
            customer_id = 1
                     )  

not in 和not exists 分别为in 和exists的对立面。

exists(sql 返回结果集为真)

not exists(sql 不返回结果集为真)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,682评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,277评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,083评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,763评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,785评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,624评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,358评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,261评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,722评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,900评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,030评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,737评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,360评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,941评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,057评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,237评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,976评论 2 355

推荐阅读更多精彩内容

  • ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year:...
    雨一流阅读 674评论 0 2
  • 前言:转后端不久,重新将学校里学的东西捡起来,本文简单对常用sql作一下整理。开发还在继续,本文也会持续更新。。。...
    LiuHJ阅读 293评论 0 0
  • select to_date('2005-12-25,13:25:59','yyyy-mm-dd,hh24:mi:...
    snailever阅读 1,242评论 0 1
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,456评论 0 13
  • 8/100 100天写作计划第8篇,这几天,几乎没有啥时间构思,就只能写写周边的事情。 现在已经接近11点半,我最...
    页彦夕阅读 508评论 9 5