1.decode () 例子:它的寫法如下decode('a','b','c','d'),其中a,b,c,d可以是其他函數也可以是數值,依據我們自己的情況來使用,它的含義是如果a=b,那麼結果顯示c,否則d。 翻譯成我們更通俗易懂的話就是: if(sex=1) then return '男' els ...
1.decode ()
例子:它的寫法如下decode('a','b','c','d'),其中a,b,c,d可以是其他函數也可以是數值,依據我們自己的情況來使用,它的含義是如果a=b,那麼結果顯示c,否則d。
翻譯成我們更通俗易懂的話就是:
if(sex=1)
then return '男'
else
return ‘女’
decode(sex,1,'男','女‘’)
用法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value 等於if1時,DECODE函數的結 果返回then1,...,如果不等於任何一個if值,則返回else。初看一下,DECODE 只能做等於測試,但剛纔也看 到了,我們通過一些函數或計算替代value,是可以使DECODE函數具備大於、小於或等於功能。
該函數的含義如下:
IF 條件=值1 THEN
RETURN(翻譯值1)
ELSIF 條件=值2 THEN
RETURN(翻譯值2)
......
ELSIF 條件=值n THEN
RETURN(翻譯值n)
ELSE
RETURN(預設值)
END IF
該函數的含義如下:
IF 條件=值1 THEN
RETURN(翻譯值1)
ELSIF 條件=值2 THEN
RETURN(翻譯值2)
......
ELSIF 條件=值n THEN
RETURN(翻譯值n)
ELSE
RETURN(預設值)
END IF
2.case ()
用法:case when 'a' then 'b' else 'c' end
例子1:case when sex=1
then '男'
else '女'
end
例子2:
CASE WHEN sex=1
THEN (case when age>=18
then '成年男人'
else ‘未成年男孩’
end)
ELSE (case when age>=18
then '成年女人'
else '未成年女孩'
3.concat(a,b)
用法:拼接字元串
例子:concat(a,’%’)給a加上%號
連接多個字元串用||
select title,concat(round((retail-cost)/cost*100),'%') from Tbl_Books;
select Category || ' - ' || Title as 圖書類別 from tbl_books;
4.round(a,b)截取數字
格式如下:ROUND(number[,decimals])
其中:number
待做截取處理的數值
decimals 指明需保留小數點後面的位數。可選項,忽略它則截去所有的小數部分,並四捨五入。如果為負數則表示從小數點開始左邊的位數,相應整數數字用0填充,小數被去掉。對截取的數字要四捨五入。
例子:select title,concat(round((retail-cost)/cost*100),'%') from Tbl_Books;
5.ceil(n)和floor(n)
ceil(n) 取大於等於數值n的最小整數;
例子:select title,ceil(cost) from Tbl_Books;
floor(n)取小於等於數值n的最大整數;
6.trunc函數處理數字
trunc函數返回處理後的數值,其工作機制與ROUND函數極為類似,只是該函數不對指定小數前或後的部分做相應舍入選擇處理,而統統截去。
其具體的語法格式如下
TRUNC(number[,decimals])
其中:
number 待做截取處理的數值
decimals 指明需保留小數點後面的位數。可選項,忽略它則截去所有的小數部分。
例子:select title,cost,retail,trunc(cost),trunc(retail) from Tbl_Books;
7.lpad( string, padded_length, [ pad_string ] )
string
準備被填充的字元串;
padded_length
填充之後的字元串長度,也就是該函數返回的字元串長度,如果這個數量比原字元串的長度要短,lpad 函數將會把字元串截取成從左到右的n個字元;
pad_string
填充字元串,是個可選參數,這個字元串是要粘貼到string的左邊,如果這個參數未寫,lpad函數將會 在string的左邊粘貼空格。
例子:select lpad(Customer_name || '/' || address || '/' || city,80) as 顧客信息 from Tbl_Customer;
8.substr(字元串,截取開始位置,截取長度) //返回截取的字;
例子:select substr(Name,0,4) as 出版社,substr(Contact,0,1) as 姓 from Tbl_Publisher;
9.replace()
含義為:替換字元串
replace(原欄位,“原欄位舊內容“,“原欄位新內容“,)
select customer_name, replace(city,'上海','ShangHai') as city from Tbl_Customer;
10.NULLIF ( expression1 , expression2 )
常量、列名、函數、子查詢或算術運算符、按位運算符以及字元串運算符的任意組合。
返回類型與第一個 expression1 相同。
輸出結果:
如果兩個表達式不相等,NULLIF 返回第一個 expression1 的值。
如果兩個表達式相等,NULLIF 返回空值NULL。
常量、列名、函數、子查詢或算術運算符、按位運算符以及字元串運算符的任意組合。
返回類型與第一個 expression1 相同。
輸出結果:
如果兩個表達式不相等,NULLIF 返回第一個 expression1 的值。
如果兩個表達式相等,NULLIF 返回空值NULL。
例子:select Customer_name ,nullif(nullif(City,'北京'),'上海') from tbl_customer;
11.Posstr(a,b)返回b在a中的位置
例子:select posstr(title,'子') from Tbl_Books;