sql常用知识

数据库常用知识注意
排序取最后一条
select transfer_desc, original_bank_info
from (select rpd.original_bank_info, rpd.transfer_desc
from 表 rpd
where rpd.policy_no = ‘入参’
and rpd.charging_method = ‘2’
and rpd.prem_due_date = ‘入参’
and rpd.back_date is not null
order by rpd.back_date desc)
where rownum = 1;
decode(参数,“Y”," 我等于Y",“N”,“我等于N”)多个用逗号继续加
procedure 存储过程名(参数名 in 类型)is
cursor 游标a(此处也可带参数) is
查询语句 and rownum=1;
BEGIN
open 游标a (此处也可带参数);–打开游标
fetch 游标a
into 参数1,
参数2;
if 游标a%found then --此处是判断不为空
需执行的语句
else
执行语句
return;
end if;
close 游标a; --关闭游标
end 存储过程名;
1.sql时间比较trunc(a.bb)>date ‘2018—01—08’
to_date(参数,“yyyy—mm—did hh24:mi:ss”)
to_date(参数,“yyyy—mm—did hh24:mi:ss”)
2.sql判断空and(a is null or b.b=a)
3.sql判断空 t.a!=(case when b=‘1’ then ‘d’ when b=‘2’ then ‘n’ else ‘j’ end)
union 是两个sql返回一个结果
union:对两个结果集进行并集操作,不包括重复,同时进行默认排序
union:重复。不排序
7.sql函数:
in包含 可以多个sql集,
8.onion将多个查询结果去重复一般是联接sql用
9.select distinct name from a去重,
10.nvl(a,b)第一个为空显示第二个
11.select trunc(sysdate) from dual
返回当前时间
12.select trunc(sysdate,‘yy’) from dual
返回当年第一天,
13.sum 返回总和
14.if($.inArray(val,[‘01’,‘02’])!=-1){这是判断包含免除在jsp页面多次判断

15.instr用法如select * from a a where instr(a.b,‘历史’)=0意思是a表中b属性带历史两个字的不查出来
16…在mybatis中:
(select nvl(max(c.序号),0)+1 from 表 where
id =#id#)
意思是根据传进来的id查询序号总数为空就是0不为空就+1
这里是id和序号为链接主键可这样弄
可以在where条件后面substr(字段,1,2)截取字段的一位和第二位
18.数据0.99显示.99
处理方法select * from to_char(参数,’fm9990.09’) 表
19.当前时间单词:sysdate
20.排序单词:order by 参数 desc
21.如果有多条一样的数据
select * from tab a,tabb b
where a.主建=1
and a.数据主建 =(select
min(c.数据主建)from tab1 c
where c.主建=a.主建 and c.唯一 = Y)
22.union 与union all区别
select * form tab1
union
select * from tab2
结果如下 表名 id name
tab1 1 鬼1
tab2 1 仙1
tab1 2 鬼2
tab2 2 仙2
select * form tab1
union all
select * from tab2
结果如下 表名 id name
tab1 1 鬼1
tab1 2 鬼2
tab2 1 仙1
tab2 2 仙2
23.rownum=1 只取一条
24。case when a=1 then 男 else 女 end
25.where sal between 200 and 300 和
where sal >=200 and <= 300是一样的意思
200到300以外就用not between and
26. group by 分组
from empty group by dep ,job order by dep
结果显示如下
dep job
1 8
1 9
3 7
3 5
4 9
4 7
27.having 在 group by 的条件后再加一个条件,
相当于再加一个where(一个客户多个保单)
select count(p.applicant_no),p.applicant_no
from policy p
where p.duty_status = ‘1’
and p.effect_date>date’2021-1-1’
group by p.applicant_no,p.applicant_no
having count(p.applicant_no) > 1
28. concat(’a’,‘b’)表示,第一个为null 就显示第二个,
select concat
29.select instr(‘abc 1’,’1’,3,1 )abc from dual
这条sql是从第3个字符开始查询字符串1的第1次出现的位置
结果输出5因为还有个空格
30.字符串截取,substr(“hgfdjd”.2.3)结果gfd
31.获取当前时间6个月之后的时间
select add_months(sysdate.6) from dual;
32.to_char(sysdate.“YYYY—MM—DD”)
外链接简写方法
select * form a ,b
where b.id = a.id(+)(此处是b外键链接a主键以外键为主) 加粗样式
33.自然日相减
select round(sysdate-to_date(‘2018-10-22’,‘yyyy-mm-dd’),2) from dual;
select ceil((To_date(‘2013-10-14 11:56:23’ , ‘yyyy-mm-dd hh24-mi-ss’) - To_date(‘2013-09-29 17:46:49’ , ‘yyyy-mm-dd hh24-mi-ss’)) * 24) 相差小时数 FROM DUAL;
select round((To_date(‘2013-10-14 11:56:23’ , ‘yyyy-mm-dd hh24-mi-ss’) - To_date(‘2013-09-29 17:46:49’ , ‘yyyy-mm-dd hh24-mi-ss’)),2) 相差天数 FROM DUAL;
select round((To_date(‘2013-10-17 13:02:29’ , ‘yyyy-mm-dd hh24-mi-ss’) - To_date(‘2013-10-14 11:56:23’ , ‘yyyy-mm-dd hh24-mi-ss’)),2) 相差天数 FROM DUAL;
select round((To_date(‘2013-10-17 13:02:29’ , ‘yyyy-mm-dd hh24-mi-ss’) - To_date(‘2013-10-14 11:56:23’ , ‘yyyy-mm-dd hh24-mi-ss’))* 24,2)-14.76 相差小时数 FROM DUAL;
34,instr用法
instr(“holl”,“o”)显示结果是2



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值