SQL 單行函數-字符函數
雖然各個數據庫都是支持SQL語句的,但是每個數據庫都有自己的函數,這些就是單行函數。單行函數分爲以下5類:
1)字符函數 2)數字函數 3)日期函數 4)轉換函數 5)通用函數
在ORACLE中最麻煩的是:轉換函數和通用函數
1、字符函數
字符函數的功能主要進行字符串數據操作,下面給出幾個字符函數:
UPPER(字符串 | 列):將輸入的字符串變爲大寫返回;
LOWER(字符串 | 列):將輸入的字符串變爲小寫返回;
INITCAP(字符串| 列):將開頭首字母是大寫;
LENGTH(字符串| 列):求出字符串的長度;
REPLACE(字符串| 列):進行替換;
SUBSTR(字符串 |列)開始點或【結束點】:字符串截取;
ORACLE之中有一點比較麻煩,即使要校驗字符串,你就必須編寫完整的SQL語句,所以在ORACLE數據庫之中爲了用戶的查詢方便,提供了一個【dual】的虛擬表。
例子:字符串大寫轉換
SQL> SELECT upper('hello') FROM dual;
UPPER
-----
HELLO
注意:大寫轉換的用處在於,用戶輸入的數據存放的是大寫還是小寫呢?
SQL> SELECT employee_id,first_name,salary,hire_date FROM employees WHERE first_name='&tj';
Enter value for tj: tj
old 1: SELECT employee_id,first_name,salary,hire_date FROM employees WHERE first_name='&tj'
new 1: SELECT employee_id,first_name,salary,hire_date FROM employees WHERE first_name='tj'
no rows selected
此時如果輸入的是小寫,則肯定無法查詢到數據;所以只能加入一個函數:
SQL> SELECT employee_id,first_name,salary,hire_date FROM employees WHERE first_name=UPPER('&tj');
Enter value for tj: tj
old 1: SELECT employee_id,first_name,salary,hire_date FROM employees WHERE first_name=UPPER('&tj')
new 1: SELECT employee_id,first_name,salary,hire_date FROM employees WHERE first_name=UPPER('tj')
EMPLOYEE_ID FIRST_NAME SALARY HIRE_DATE
----------- -------------------- ---------- ------------------
132 TJ 2100 10-APR-99
注意:【&】的符號表示替代變量的內容,此部分內容不做爲重點。
例子:字符串小寫轉換,將所有僱員姓名按照小寫字符來
SQL> SELECT LOWER(first_name) FROM employees;
LOWER(FIRST_NAME)
--------------------
ellen
sundar
mozhe
david
hermann
shelli
amit
elizabeth
sarah
david
laura
LOWER(FIRST_NAME)
--------------------
harrison
alexis
anthony
gerald
nanette
john
kelly
karen
curtis
lex
julia
例子:將每一個僱員姓名的開頭首字母大寫
SQL> SELECT INITCAP(first_name) FROM employees;
INITCAP(FIRST_NAME)
--------------------
Ellen
Sundar
Mozhe
David
Hermann
Shelli
Amit
Elizabeth
Sarah
David
Laura
例子:查詢出每個僱員姓名的長度
SQL> SELECT first_name,LENGTH(first_name) FROM employees;
FIRST_NAME LENGTH(FIRST_NAME)
-------------------- ------------------
Ellen 5
Sundar 6
Mozhe 5
David 5
Hermann 7
Shelli 6
Amit 4
Elizabeth 9
Sarah 5
David 5
Laura 5
例子:查詢姓名長度正好是5的僱員信息
SQL> SELECT first_name,LENGTH(first_name) FROM employees WHERE LENGTH(first_name)=5;
FIRST_NAME LENGTH(FIRST_NAME)
-------------------- ------------------
Ellen 5
Mozhe 5
David 5
Sarah 5
David 5
Laura 5
Kelly 5
Karen 5
Julia 5
Bruce 5
Kevin 5
例子:使用字母"_"替換姓名中所有字母爲“A”
SQL> SELECT REPLACE(first_name,'A','_') FROM employees;
REPLACE(FIRST_NAME,'
--------------------
Ellen
Sundar
Mozhe
David
Hermann
Shelli
_mit
Elizabeth
Sarah
David
Laura
REPLACE(FIRST_NAME,'
--------------------
Harrison
_lexis
_nthony
Gerald
Nanette
John
Kelly
Karen
Curtis
Lex
Julia
字符串的截取有兩種語法:
1)SUBSTR(字符串 | 列,開始點),表示從開始點一值截取到結尾
SQL> SELECT first_name,SUBSTR(first_name,3) FROM employees;
FIRST_NAME SUBSTR(FIRST_NAME,3)
-------------------- ----------------------
Ellen len
Sundar ndar
Mozhe zhe
David vid
Hermann rmann
Shelli elli
Amit it
Elizabeth izabeth
Sarah rah
David vid
Laura ura
Harrison rrison
Alexis exis
Anthony thony
Gerald rald
Nanette nette
John hn
Kelly lly
Karen ren
Curtis rtis
2)SUBSTR(字符串 | 列,開始點,結束點),表示從開始點一值截取到結尾點,截取部分內容
SQL> SELECT first_name,SUBSTR(first_name,0,3) FROM employees;
FIRST_NAME SUBSTR(FIRST_NAME,0,3)
-------------------- ----------------------
Ellen Ell
Sundar Sun
Mozhe Moz
David Dav
Hermann Her
Shelli She
Amit Ami
Elizabeth Eli
Sarah Sar
David Dav
Laura Lau
Harrison Har
Alexis Ale
Anthony Ant
Gerald Ger
Nanette Nan
John Joh
Kelly Kel
Karen Kar
Curtis Cur
如果我將 SUBSTR(first_name,0,3) 中的“0”改成“1”呢?
SQL> SELECT first_name,SUBSTR(first_name,1,3) FROM employees;
FIRST_NAME SUBSTR(FIRST_NAME,1,3)
-------------------- ----------------------
Ellen Ell
Sundar Sun
Mozhe Moz
David Dav
Hermann Her
Shelli She
Amit Ami
Elizabeth Eli
Sarah Sar
David Dav
Laura Lau
Harrison Har
Alexis Ale
Anthony Ant
Gerald Ger
Nanette Nan
John Joh
Kelly Kel
Karen Kar
Curtis Cur
注意:SUBSTR的行數從 “0”或“1”截取是一樣的,ORACLE數據庫在這裏做的很智能。
例子:截取每個僱員姓名的後3個字母,有2種辦法:
1)通過長度-2確定開始點
SQL> SELECT first_name,SUBSTR(first_name,LENGTH(first_name)-2) FROM employees;
FIRST_NAME SUBSTR(FIRST_NAME,LENGTH(FIRST
-------------------- -------------------------------
Ellen len
Sundar dar
Mozhe zhe
David vid
Hermann ann
Shelli lli
Amit mit
Elizabeth eth
Sarah rah
David vid
Laura ura
Harrison son
Alexis xis
Anthony ony
Gerald ald
Nanette tte
John ohn
Kelly lly
Karen ren
Curtis tis
2)通過設置負數,從後截取位置
SQL> SELECT first_name,SUBSTR(first_name,-3) FROM employees;
FIRST_NAME SUBSTR(FIRST_NAME,-3)
-------------------- ---------------------
Ellen len
Sundar dar
Mozhe zhe
David vid
Hermann ann
Shelli lli
Amit mit
Elizabeth eth
Sarah rah
David vid
Laura ura
Harrison son
Alexis xis
Anthony ony
Gerald ald
Nanette tte
John ohn
Kelly lly
Karen ren
Curtis tis
注意:SUBSTR函數也可以設置負數,表示從後開始向前截取。
SQL單行函數-字符函數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.