1、返回字符值的字符函数
返回字符值的字符函数(Character Functions)返回下列数据类型的值,除非另有说明:
- 如果输入参数是CHAR或VARCHAR2,那么返回的值是VARCHAR2。
- 如果输入参数是NCHAR或NVARCHAR2,那么返回的值是NVARCHAR2。
函数返回值的长度受返回数据类型的最大长度限制。
- 对于返回CHAR或VARCHAR2的函数,如果返回值的长度超过了限制,那么Oracle数据库会截断它并返回结果,而不会出现错误消息。
- 对于返回CLOB值的函数,如果返回值的长度超过了限制,那么Oracle将抛出一个错误,并且不返回任何数据。
返回字符值的字符函数如下:
- CHR
- CONCAT
- INITCAP
- LOWER
- LPAD
- LTRIM
- NCHR
- NLS_INITCAP
- NLS_LOWER
- NLS_UPPER
- NLSSORT
- REGEXP_REPLACE
- REGEXP_SUBSTR
- REPLACE
- RPAD
- RTRIM
- SOUNDEX
- SUBSTR
- TRANSLATE
- TRANSLATE … USING
- TRIM
- UPPER
2、返回数字值的字符函数
返回数字值的字符函数可以接受任何字符数据类型作为其参数。
返回数字值的字符函数是:
ASCII
INSTR
LENGTH
REGEXP_COUNT
REGEXP_INSTR
3、案例代码
/*
主题:字符函数
作者:AT阿宝哥, [email protected]
日期:2016年9月18日
说明:
注意:
*/
-------------------------------------------------------------------------------
SELECT * FROM emp;
-------------------------------------------------------------------------------
--小写转换
SELECT lower('ORACLE') FROM dual;
select job ,lower(job) from emp;
SELECT empno,ename,lower(ename) AS lowerename ,sal FROM emp;
-------------------------------------------------------------------------------
--大写转换
SELECT upper('oracle') FROM dual;
INSERT INTO emp VALUES(8000,'tom','CLERK','7902','20-2月 -81',900,100,10);
SELECT empno,ename,upper(ename) AS upperename ,sal FROM emp;
-------------------------------------------------------------------------------
--首字母大写
SELECT initcap('oracle') FROM dual;
SELECT empno,ename,initcap(ename) AS initcapename ,sal FROM emp;
-------------------------------------------------------------------------------
--大小写转换后进行值比较
SELECT * FROM EMP ;
SELECT * FROM EMP WHERE ENAME = 'smith';
SELECT * FROM EMP WHERE Lower(ENAME) = 'smith';
SELECT * FROM EMP WHERE ENAME Like 's%';
SELECT * FROM EMP WHERE Lower(ENAME) Like 's%';
-------------------------------------------------------------------------------
SELECT concat('Hello', 'World') FROM dual; --字符串连接
SELECT substr('HelloWorld', 6 , 10) FROM dual; --字符串截取函数/子字符串函数
SELECT LENGTH('HelloWorld') FROM dual;--求字符串长度
SELECT instr('HelloWorld', 'W') FROM dual;--求子字符串在源字符串中的起始位置
SELECT lpad('Hello',10,'*') FROM dual; --左补齐
SELECT rpad('Hello', 10, '*') FROM dual; --右补齐
SELECT TRIM('-' FROM '-HelloWorld-') FROM Dual;--修剪函数,只对首尾起作用;
SELECT REPLACE ('1#1#1#' , '#' ,'*') FROM dual;--替换函数
SELECT REPLACE ('1#1#1#' , '#' ) FROM dual;--前两个参数强制,最后一个省略后将执行从源字符串删除搜索项目的操作。
--举例
SELECT * FROM EMP WHERE length(ENAME) < 5;
-------------------------------------------------------------------------------