字符函數:簡化操作———————————————單行函數、多行函數
單行函數:操作單個數據
多行函數:操作的數據是多個
——————————————————————————————————————————
單行函數
——————————————————————————————————————
字符函數
lower('字母') ----------->轉小寫:
upper('字母')------------>轉大寫
initcap('字母')----------->首字母大寫
字符控制函數:concat('a','b')鏈接
substr(a,b) 從a中,b位開始到最後
substr(a,b,c) 從a中,b位開始,取c個長度
length('漢字') 字符數
lengthb('漢字') 字節數
instr(a,b) 在a中查找b,返回其位置 ,沒有返回則是0
lpad('字母',10,'符號') 左填充 ,例如:lpad('abc',10,'*') ------->abc共三位,需要10位,左填7個*
rpad('字母',10,'符號') 右填充
trim('H',from 'Hello WorldH') from dual ; ---->去掉首尾的H
replace('Hello world','l','*') ---->將l替換成*
————————————————————————————————————————
數學函數
Round(45.345,2) ------->將45.345保留2位小數,正數是小數區,負數是整數區
trunc(數字) ---------->向下取整
————————————————————————————————————————
日期函數
select sysdate from dual; 日期默認輸出格式:MM-DD-YY
select to_char(sysdate,'yyyy-mm-dd') ----->格式 YYYY-MM-DD
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; ----------->輸出格式:YYYY-MM-DD HH(24小時制) :MI:SS
計算的天數可以相加減,但是日期不能相加
months_between()相差天數,例如:select ename ,hiredate months_between (sysdate,hiredate) from emp;計算hiredate和sysdate相差的月份
add_months()相加月份----->例如:select add_months(sysdate,53) from dual ; 表示53個月後
last_day() 這個月份的最後一天,例如:select last_day(sysdate) from dual ; 表示一個月的最後一天
next_day() 下一個星期幾 ,例如:select next_day(sysdate,'星期六') from dual; 下一個星期六
round(時間,'年或月或日') 如果是年,按月算,如果是月,按日算
————————————————————————————————————————
轉換函數
to_char(date或number,轉換格式)
日期轉換:YYYY----年,MM------月,DY-------星期,DD--------日,可以在中間加入字符串
數字轉換:9代表數字,L代表本地貨幣, .小數點, ,千位符
例如:to_char(123456,'L9,999.99') ----->¥123.456.00
————————————————————————————————————————
通用函數
NVL(a,b) ------------------->如果a爲null,則返回b,如果a不爲null,返回a
NVL2(a,b,c) ---------->當a=null的時候,返回c,否則返回b
nullif(a,b) ----------->當a=b時,返回null,否則返回a
coalesce() ------------->從左到右找到第一個不爲null的值
————————————————————————————————————————————————————————
條件表達式
IF-THEN-ELSE
在SQL語句中實現if-else語句
CASE 表達式 SQL99格式
DECODE 表達式 orcale自己的語法
CASE :例如:
CASE 表達式 WHEN 表達式 THEN 返回值 WHEN 表達式 THEN 返回值 WHEN 表達式 THEN 返回值 ELSE 返回值
DECODE :例如:
DECODE (表達式,'條件一',返回值1,'條件二',返回值2,‘條件三’,返回值3)
————————————————————————————————————————————————
分組函數
AVG() COUNT() MAX() MIN() SUM()
在select 語句中,包含字段若不在多行函數中,那麼必須出現在分組函數中
例如:select a,b,c,d ,count(e) from emp group by a,b,c,d
與它相反,在group by 中出現的字段,可以不出現在select包含的字段中,例如:
select a,b,c count(e) from emp group by a,b,c,d
————————————————————————————————————————————————
多個分組函數過濾使用having
where和having的區別:
where 後面不能使用多行函數,where在from後面,having在group by後