--字符函數
--upper()將字符轉換為大寫
--lower()將字符轉換為小寫
SELECT UPPER('liunan'),LOWER('LIUNAN')
FROM dual;
--查詢SMITH的信息,寫smith寫成小寫,用UPPER轉換為大寫
SELECT *
FROM emp e
WHERE e.ename=UPPER('smith');
--查詢所有員工的姓名並將所有員工姓名,首字母大寫
SELECT e.empno,e.ename 原來的姓名,INITCAP(e.ename) 員工姓名首字母大寫
FROM emp e;
--查詢所有員工的編號,姓名,並且將員工姓名中所有字母A替換為字符'_'
SELECT e.empno,e.ename 原來的姓名,
REPLACE(ename,'A','_') 字母A替換為字符_
FROM emp e;
SELECT e.empno,e.ename 原來的姓名,
Translate(ename,'A','_') 字母A替換為字符_
FROM emp e;
--查詢出姓名長度是5的所有員工信息
SELECT *
FROM emp e
WHERE LENGTH(e.ename)=5;
--查詢姓名前3個是JAM的員工信息substr
SELECT *
FROM emp e
WHERE substr(e.ename,0,3)='JAM';
SELECT *
FROM emp e
WHERE e.ename LIKE 'JAM%';
--查詢所有10部門員工的姓名,但不顯示第個員工的前3個字母
SELECT e.deptno,e.ename 原來的姓名,
SUBSTR(e.ename,4) 不顯示前3個字母姓名
FROM emp e
WHERE e.deptno=10;
--顯示所有員工的姓名及後3個字母 -負代數從後向前
SELECT e.ename 原來的姓名,SUBSTR(e.ename,-3) 後3個字母
FROM emp e;
--用LENGTH也可以實現
SELECT e.ename 原來的姓名,SUBSTR(e.ename,-3) 後3個字母,
SUBSTR(e.ename,LENGTH(e.ename)-2) 後3個字母
FROM emp e;
--substr下標是從1開始的,設置為0會自動從1開始,設置為負數從後向前截取
--返回指定字符的ASCII碼
SELECT ASCII('A'),ASCII('a') FROM dual;
--chr()將ASCII變為字符
SELECT CHR('65'),CHR('97') FROM dual;
SELECT ASCII('A'),ASCII('a'),CHR('65'),CHR('97') FROM dual;
--去掉左邊空格
SELECT LTRIM(' liunan ') FROM dual;
--去掉右邊空格
SELECT LTRIM(' liunan ') 去掉左邊空格,
RTRIM(' liunan ') 去掉右邊空格
FROM dual;
--去掉2邊空格
SELECT LTRIM(' liunan ') 去掉左邊空格,
RTRIM(' liunan ') 去掉右邊空格,
TRIM(' liunan ') 去掉2邊空格
FROM dual;
--LTRIM/RTRIM也可以截取
SELECT LTRIM('xyzadams','xyz') 左側去掉xyz,
RTRIM('xyzadams','ams') 右側去掉ams
FROM dual;
--字符左,右填充函數LPAD(),RPAD()
SELECT LPAD('liunan',10,'*') 去掉字符長度後左側填充指定字符,
RPAD('liunan',10,'*') 去掉字符長度後左側填充指定字符,
RPAD(LPAD('liunan',10,'*'),14,'*') 搭配使用左右填充
FROM dual;