ORACLE_SQL语句总结

SQL语句学习总结

数字类型NUMBER可用运算符(+ - * /),日期DATE类型只能用(+ -),日期之间+没有意义,SQL语句不区分大小写,但是

匹配字符串时严格区分大小写。'2'+2 =4,因为varchar2和number,varchar2和date之间可以自动转换。

1.空值判断(NULL)

--C_CONS用户表,cons_id为NUMBER类型,cons_name为VARCHAR类型
SELECT a.cons_name
	FROM c_cons a
--为空
--WHERE a.cons_address IS NULL
--不为空
WHERE a.cons_address IS NOT NULL

2.区间匹配(BETWEEN ...AND)

--C_CONS用户表,cons_id为NUMBER类型,cons_name为VARCHAR类型
SELECT a.cons_name
	FROM c_cons a
--在1~10之前,包含边界
WHERE a.cons_id BETWEEN 1 AND 10
--不在1~10之间
--WHERE a.cons_id NOT BETWEEN 1 AND 10

3.模糊查询(LIKE)

--C_CONS用户表,cons_id为NUMBER类型,cons_name为VARCHAR类型
SELECT a.cons_address
	FROM c_cons a
--匹配姓名包含a,b
--WHERE a.cons_name LIKE '%a%b%' OR a.cons_name LIKE '%b%a%'
--匹配姓名包含特殊字符需要转义的(第二个字母是_的用户)
WHERE a.cons_name LIKE '_\_%' ESCAPE '\'

4.存在数值中(IN)

--C_CONS用户表,cons_id为NUMBER类型,cons_name为VARCHAR类型
SELECT a.cons_address
	FROM c_cons a
--匹配id在1,2,3中的
WHERE a.cons_id IN (1,2,3)
--不在
WHERE a.cons_id NOT IN (1,2,3)

5.大小写函数(大写UPPER、小写LOWER、首字母大写INITCAP)

--C_CONS用户表,cons_id为NUMBER类型,cons_name为VARCHAR类型
SELECT a.cons_address
	FROM c_cons a
--匹配姓名叫Jack的(全部转为大写)
WHERE UPPER(a.cons_name) = 'JACK'
--全部转为小写
--WHERE LOWER(a.cons_name) = 'jack'
--首字母大写
--WHERE INITCAP(a.cons_name) = 'Jack'

6.字符控制函数(连接CONCAT、截取SUBSTR、长度LENGTH、首次出现位置INSTR、补齐位数、移除TRIM、REPLACE替换)

--连接CONCAT
CONCAT('a','b')           ab
--截取SUBSTR(角标从1开始,2代表第二个字符,4代表取4个)
SUBSTR('abcdefg',2,4)     bcde
--长度LENGTH
LENGTH('abc')             3
--首次出现位置INSTR(没有返回0)
INSTR('abcdefg','d')      4
--补齐位数(左LPAD,右RPAD,对齐常使用'')
LPAD('abcd',10,'*')       ******abcd
RPAD('abcd',10,'*')       abcd******
--移除TRIM(只去首尾)多用去空格
TRIM('a' from 'aba')      b
--REPLACE替换(替换所有)
REPLACE('ababa','a','c')  cbcbc

7.数字函数(四舍五入ROUND、直接截断TRUNC、求余MOD)

--四舍五入ROUND
ROUND(123.45,2)           123.45
ROUND(123.95)             124
ROUND(123.45,-2)          100
--直接截断TRUNC
TRUNC(129.45,2)           123.45
TRUNC(129.45)             123
TRUNC(129.45,-2)          100
--求余MOD
MOD(100,30)               10 

8.日期函数

--两个日期月数差
MONTH_BETWEEN(SYSDATE,a.date)
--向日期加几个月
ADD_MONTHS(SYSDATE,2)
--即将出现的星期几是哪天
NEXT_DAY(SYSDATE,'星期一')
--月倒数第二天
LAST_DAY(SYSDATE)-1 
--ROUND按月
ROUND(SYSDATE,'MONTH')

9.类型显示转换

--显示转换
to_char(12345.67,'999,999,999.99')    12,345.67
to_char(12345.67,'000,000,999.99')    012,345.67
to_char(12345.67,'$999,999,999.99')   $12,345.67
to_char(12345.67,'L999,999,999.99')   ¥12,345.67

10.NVL

--为空返回0
nvl(cons_id,0)
--为空返回0,不为空返回123
nvl2(cons_id,123,0)


11.CASE...WHEN,DECODE

CASE a.cons_age WHEN '20' THEN '10' 
                        WHEN '21' THEN '11' 
                        WHEN '22' THEN '12' 
                        WHEN '23' THEN '13' 
                        ELSE '14' AS price
END

DECODE(a.cons_age, 10,'10',
                           21,'11',
                           '14') AS price 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值