oracle中的單行函式(一)
oracle中的單行函式(一)
單行函式:每處理一條記錄返回一條結果.
Single-row functions return one row of results for each record processed.
下面介紹下oracle中的大小寫轉換函式,字串操作函式。
大小寫轉換函式:lower,upper,initcap
字串操作函式:substr,instr,length,lpad/rpad,ltrim/rtrim,replace,translate,concat
lower語法格式:
lower(c).c是字串或者是要轉換的域。
SQL> select first_name,last_name,commission_pct
2 from employees
3 where lower(last_name)='king';
FIRST_NAME LAST_NAME COMMISSION_PCT
-------------------- ------------------------- --------------
Steven King
Janette King 0.35
lower函式在select語句中使用不會改變資料庫中字元的大小寫形式。當在插入或者
更新語句中使用lower函式的時候,可能會影響資料庫中儲存的字元的大小寫形式。
注意查詢展現的字元的大小寫形式還是儲存的時候的大小寫形式。
如果想讓展現的字元都變成大寫或者小寫可以使用下面的方式:
SQL> select lower(first_name),lower(last_name),commission_pct
2 from employees
3 where lower(last_name)='king';
LOWER(FIRST_NAME) LOWER(LAST_NAME) COMMISSION_PCT
-------------------- ------------------------- --------------
steven king
janette king 0.35
注意上面的表頭是帶有函式的,可以使用別名來消除表頭。
SQL> select lower(first_name) as first_name,lower(last_name) as last_name,commission_pct
2 from employees
3 where lower(last_name)='king';
FIRST_NAME LAST_NAME COMMISSION_PCT
-------------------- ------------------------- --------------
steven king
janette king 0.35
upper函式的語法格式:
upper(c).c表示要轉換的字元或者需要轉換的域。
SQL> select firstname,lastname,city
2 from customers
3 where lastname=upper(&lastname);
輸入 lastname 的值: 'smith'
原值 3: where lastname=upper(&lastname)
新值 3: where lastname=upper('smith')
FIRSTNAME LASTNAME CITY
-------------------- -------------------- ------------------------
LEILA SMITH TALLAHASSEE
JENNIFER SMITH MORRISTOWN
上面的SQL語句先將lastname變數的值轉換成大寫,然後再與資料庫中儲存的值進行比較。
使用上面的方法,使用者輸入的時候不必考慮資料庫中儲存值的大小寫形式,另外還可以
提高oracle伺服器的效率,因為轉換的只是輸入條件,而不是整張表中的某列值。
initcap函式的語法格式:
initcap (c).c表示需要被轉換的字串,或者需要被轉換的域。initcap函式會將要
轉換的內容的每個單詞的首字母轉換成大寫的形式,其他的是小寫格式。這樣方便閱讀。
SQL> select first_name,last_name,commission_pct
2 from employees
3 where last_name=initcap(&lastname);
輸入 lastname 的值: 'king'
原值 3: where last_name=initcap(&lastname)
新值 3: where last_name=initcap('king')
FIRST_NAME LAST_NAME COMMISSION_PCT
---------------------------------------- -------------------------------------------------- --------------
Steven King
Janette King .35
注意employees表中的first_name與last_name列的第一個字母是大寫的。
substr函式的語法格式:
substr(c, p,l).c代表字串或者需要處理的域,p代表開始字串抽取的位置,l表示抽取的字串長度。
customers表中的zip列的前三個字元有特殊的意義,表示顧客來自那個州。
現在把這些字串抽取出來。以確定顧客來自那些州。
SQL> select distinct substr(zip,1,3)
2 from customers;
SUBSTR(ZIP,1,3)
------------------------
331
079
323
837
122
312
904
820
915
490
787
substr(zip,1,3),表示對zip列進行抽取,從第一個字元開始,抽取的長度是3.
SQL> select zip,substr(zip,1,3),substr(zip,-3,2)
2 from customers;
ZIP SUBSTR(ZIP,1,3) SUBSTR(ZIP,-3,2)
---------- ------------------------ ----------------
32328 323 32
90404 904 40
32306 323 30
83707 837 70
98115 981 11
12211 122 21
78710 787 71
82003 820 00
91510 915 51
30314 303 31
60606 606 60
字串開始抽取的位置也可以是負數,表示從字串反向開始計數。
substr(zip,-3,2),表示從字串倒數第三個字元開始抽取,長度是2.
instr函式的語法格式
強制的引數有:用於查詢的字串,待查詢的子字串(用單引號括起來)。
可選的引數有:用於字串中開始查詢的位置,用於表示匹配出現的次數。
如果查詢到,則返回匹配開始處的第一個字元的位置,如果沒有查詢到則返回0.
SQL> select phone_number,instr(phone_number,'.') "第1個點的位置",
2 instr(phone_number,'.',5) "從第5個字元開始",
3 instr(phone_number,'.',1,2) "第2個點出現的位置"
4 from employees;
PHONE_NUMBER 第1個點的位置 從第5個字元開始 第2個點出現的位置
---------------------------------------- ------------- --------------- -----------------
515.123.4567 4 8 8
515.123.4568 4 8 8
515.123.4569 4 8 8
590.423.4567 4 8 8
590.423.4568 4 8 8
590.423.4569 4 8 8
590.423.4560 4 8 8
590.423.5567 4 8 8
515.124.4569 4 8 8
515.124.4169 4 8 8
515.124.4269 4 8 8
length函式的語法
length(c).c表示要求其長度的字串或者域。
求customers表中位址列的長度。
SQL> select length(address) "Length"
2 from customers;
Length
----------
12
13
11
18
12
12
16
12
13
17
11
length函式常用於確定表中的某一列是否,考慮應該增加長度了。
lpad函式的語法格式
lpad(c, l, s) c表示要處理的字串,l表示填充以後字串的長度(包括原始的數
據與填充符),s代表用於填充的特殊字元。lpad函式將在列的左邊填充特定的字元,而不是空格。
SQL> select lastname,lpad(lastname,12,'#')
2 from customers;
LASTNAME LPAD(LASTNAME,12,'#')
---------- ------------------------------------------------
MORALES #####MORALES
THOMPSON ####THOMPSON
SMITH #######SMITH
PIERSON #####PIERSON
GIRARD ######GIRARD
CRUZ ########CRUZ
GIANA #######GIANA
JONES #######JONES
PEREZ #######PEREZ
要填充的字串要用單引號括起來。
相應的有rpad與lpad在語法上是相同的,只不過實在要出來的字串或者域的右邊添
加特殊的字元。
replace函式的語法格式
replace(c, s, r).c代表要原來的字串或者域,s表示要查詢的字串,r表示用來
代替s的字串。replace函式會用r多次替換s,如果可以查詢到多個s的話。
SQL> select address,replace(address,'P.O.','POST OFFICE')
2 from customers
3 where state='FL';
ADDRESS REPLACE(ADDRESS,'P.O.','POSTOF
-------------------- ------------------------------------
P.O. BOX 651 POST OFFICE BOX 651
P.O. BOX 66 POST OFFICE BOX 66
357 WHITE EAGLE AVE. 357 WHITE EAGLE AVE.
P.O. BOX 677 POST OFFICE BOX 677
要查詢與要替換的字串要用單引號括起來.
translate的使用
可以使用translate函式來查詢並替換字串中的單個字元,translate函式會替換多
次(如果存在需要替換的字元的話)直到字串的末尾。
SQL> select translate('I love oracle database.','o','O')
2 from dual;
TRANSLATE('ILOVEORACLEDATABASE.','O','O')
----------------------------------------------
I lOve Oracle database.
字串中所有出現的小寫的o都會替換成大寫的O.
SQL> select translate('I love oracle database.','Io','iO')
2 from dual;
TRANSLATE('ILOVEORACLEDATABASE.','IO','IO')
----------------------------------------------
i lOve Oracle database.
字串中所有出現的小的o都會被替換成大小的O,大寫的I都會被替換成小寫的i。
即:o.....>O,I....>i
translate是字元級別的替換,replace是字串級別的替換。比如在
translate('hello everybody.','body','oney')中b 都會替換成o字元,o字元都會
替換成n字元,d字元都會替換成e字元,y字元替換成字元y。
concat函式的語法格式
concat(c1, c2),c1表示第一個需要連線的字串或者列,c2表示第二個需要連線的
字串或者列。
SQL> select concat('I love ','oracle database.')
2 from dual;
CONCAT('ILOVE','ORACLEDATABASE.')
----------------------------------------------
I love oracle database.
ltrim函式的語法格式
ltrim(c, s).c 表示要處理的域,s表示左邊需要移除的字串。如果要處理的域中
沒有發現要裁剪的字串s,則不裁剪。rtrim的用法參照ltrim。
SQL> select ltrim('oracle nosql database','oracle')
2 from dual;
LTRIM('ORACLENOSQLDATABASE','O
------------------------------
nosql database
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26110315/viewspace-716097/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE中的單行函式Oracle函式
- ORACLE中的單行函式 (2)Oracle函式
- oracle中的單行函式(三)Oracle函式
- oracle中的單行函式(二)Oracle函式
- ORACLE單行函式與多行函式之一Oracle函式
- Oracle單行函式詳解Oracle函式
- Oracle中coalesce函式的簡單理解Oracle函式
- ORACLE單行函式與多行函式之二:字元函式示例Oracle函式字元
- ORACLE單行函式與多行函式之三:數值函式Oracle函式
- ORACLE單行函式與多行函式之四:日期函式示例Oracle函式
- ORACLE單行函式與多行函式之六:通用函式示例Oracle函式
- ORACLE單行函式與多行函式之五:轉換函式示例Oracle函式
- ORACLE單行函式與多行函式之七:多行函式之分組函式示例Oracle函式
- ORACLE函式介紹第一篇 著名函式之單值函式Oracle函式
- 常見函式之單行函式函式
- Oracle行轉列的函式Oracle函式
- 一個簡單的oracle函式返回陣列的例子Oracle函式陣列
- oracle中的decode(函式)Oracle函式
- js中在一個函式中引用另一個函式中的函式,可以這麼做JS函式
- Oracle 使用分析函式刪除表中的重複行Oracle函式
- SQL中的單記錄函式SQL函式
- oracle的一些函式(一)Oracle函式
- Oracle行轉列函式Oracle函式
- 《卸甲筆記》-單行函式對比之一筆記函式
- oracle分析函式(一)Oracle函式
- Oracle中Decode()函式的使用Oracle函式
- oracle中的chr()和ascii()函式OracleASCII函式
- Oracle中關於函式的使用Oracle函式
- oracle中的幾個hash函式Oracle函式
- 6、Oracle中的分組函式Oracle函式
- Oracle中自定義函式Oracle函式
- 【函式】Oracle中聚合函式rank()使用方法函式Oracle
- Oracle 中 replace函式和translate函式比較Oracle函式
- 一些簡單的函式函式
- JavaScript中的立即執行函式JavaScript函式
- 在單獨執行緒中執行物件成員函式 (轉)執行緒物件函式
- PL/SQL單行函式和組函式詳解(轉)SQL函式
- oracle 與 mysql 中的函式總結OracleMySql函式