Oracle 11g Release 1 (11.1)函数——(返回字符值的)字符函数
本文内容
返回字符值的字符函数
附录 ASCII
Oracle 字符函数包括:
返回字符值的字符函数
NLS 字符函数
返回数字值的字符函数
返回字符值的字符函数
返回字符值的字符函数会返回如下数据类型:
若输入参数为 CHAR 或 VARCHAR2,则返回值为 VARCHAR2。
若输入参数为 NCHAR 或 NVARCHAR2,则返回值为 NVARCHAR2。
函数返回值的长度是由返回的数据类型的最大长度决定:
对于返回 CHAR 或 VARCHAR2 的函数,若返回值的长度超过限制,则 Oracle
数据库截取并返回,不报错。
www.2cto.com
CHR(n)
CHR(n USING NCHAR_CS)
以数据库字符集,返回与 n 二进制等价的 VARCHAR2 字符。它们(参数和返回值)的二进制相同。若指定 USING NCHAR_CS,则以国际化字符集。
对于单字节字符集(single-byte character sets),如果 n>256,则 Oracle 数据库返回 n 等价二进制与 256 的模。对于多字节字符集(multibyte character sets),n 必须解决整个代码点。不验证无效的代码点,并且指定无效代码点的结果是不确定的。
该函数参数为 NUMBER 值,或是任何可以隐式转换成 NUMBER 的值,并返回一个字符。
CONCAT(char1,char2)
连接。char1 和 char2 可以是 CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB 或 NCLOB。返回值的字符串与 char1 字符集相同,类型与依赖于参数的数据类型。
连接两个不同的数据类型时,Oracle 数据库无损转换返回数据。因此,若其中一个参数为 LOB,则返回值为 LOB。若其中一个参数为国际数据类型,则返回值也是一个国际数据类型。例如:
CONCAT(CLOB, NCLOB),返回 NCLOB
CONCAT(NCLOB, NCHAR),返回 NCLOB
CONCAT(NCLOB, CHAR),返回 NCLOB
CONCAT(NCHAR, CLOB),返回 NCLOB
该函数等价于连接运算符(||)。
INITCAP(char)
LOWER(char)
UPPER(char)
NLS_INITCAP(char)
NLS_INITCAP(char,’nlsparam’)
NLS_LOWER(char)
NLS_LOWER(char,’nlsparam’)
NLS_UPPER(char)
NLS_UPPER(char,’nlsparam’)
INITCAP 头字母转换成大写
LOWER 所有字符转换成小写
UPPER 所有字符转换成大写
NLS_* 开头的函数可以指定对特定语言敏感。
示例 1:演示语言敏感。英语习惯是头字母大写,但其他语言,就不一定了。
SQL> SELECT NLS_INITCAP('ijsland') "InitCap",
2 NLS_INITCAP('ijsland', 'NLS_SORT = XDutch') as "linguistic-sensitiv
" www.2cto.com
3 FROM DUAL;
InitCap linguis
------- -------
Ijsland IJsland
SQL>
LPAD(expr1,n)
LPAD(expr1,n,expr2)
RPAD(expr1,n)
RPAD(expr1,n,expr2)
LPAD 左补齐
RPAD 右补齐
示例 2:演示 LPAD 和 RPAD。
SQL> SELECT LPAD('Page 1', 15),
2 LPAD('Page 1', 15, '*$'),
3 RPAD('Page 1', 15),
4 RPAD('Page 1', 15, '*$')
5 FROM DUAL;
LPAD('PAGE1',15 LPAD('PAGE1',15 RPAD('PAGE1',15 RPAD('PAGE1',15
--------------- --------------- --------------- ---------------
Page 1 *$*$*$*$*Page 1 Page 1 Page 1*$*$*$*$*
SQL> www.2cto.com
LTRIM(char,set)
LTRIM(char)
RTRIM(char,set)
RTRIM(char)
TRIM(trim_source)
TRIM(trim_character FROM trim_source)
TRIM(LEADING,trim_character FROM trim_source)
TRIM(TRAILING,trim_character FROM trim_source)
TRIM(BOTH,trim_character FROM trim_source)
LTRIM 从左边开始移除
RTRIM 从右边开始移除
TRIM 从左右移除
示例 3:演示 LTRIM 和 RTRIM。
SQL> SELECT 'Page 1' as "src",
2 LTRIM('Page 1', 'P') as "ltrim 'P'",
3 LTRIM('Page 1', 'Pa') as "ltrim 'Pa'",
4 RTRIM('Page 1', 'a') as "rtrim 'P'"
5 FROM DUAL;
src ltrim 'P' ltrim 'Pa' rtrim 'P'
------ ---------- ---------- ----------
Page 1 age 1 ge 1 Page 1
www.2cto.com
SQL>
示例 4:演示 TRIM。表 employees 位于 Oracle OE schema。
SQL> SELECT employee_id,
2 hire_date as "hiredate",
3 TO_CHAR(TRIM(0 FROM hire_date)) as "Trim 0",
4 TO_CHAR(TRIM(LEADING 0 FROM hire_date)) as "TrimLeading 0",
5 TO_CHAR(TRIM(TRAILING 0 FROM hire_date)) as "TrimTrailing 0",
6 TO_CHAR(TRIM(BOTH 0 FROM hire_date)) as "TrimBoth 0"
7 FROM employees
8 WH