Oracle 11g Release 1 (11.1) 函数——NLS 字符函数和返回数字值的字符函数
http://docs.oracle.com/cd/B28359_01/server.111/b28286/functions001.htm#autoId2
本文内容
- NLS 字符函数
- 返回数字值的字符函数
Oracle 字符函数包括:
- 返回字符值的字符函数
- NLS 字符函数
- 返回数字值的字符函数
NLS 字符函数
NLS 字符函数返回关于字符集的信息。NLS 字符函数包括:
- NLS_CHARSET_ID
- NLS_CHARSET_DECL_LEN
- NLS_CHARSET_NAME
NLS_CHARSET_ID(string)
NLS_CHARSET_ID 函数返回字符集对应的 ID。string 参数是 VARCHAR2 值。'CHAR_CS' 的 string 值返回服务器数据库字符集 ID。'NCHAR_CS' 的 string 值返回服务器国际化字符集 ID。
无效字符集返回 null。
示例 1:演示 NLS_CHARSET_ID。
SQL> SELECT NLS_CHARSET_ID('ja16euc') FROM DUAL;
NLS_CHARSET_ID('JA16EUC')
-------------------------
830
SQL>
NLS_CHARSET_DECL_LEN(byte_count,'char_set_id')
NLS_CHARSET_DECL_LEN 函数返回一个 NCHAR 列的声明长度(也就是字符个数)。byte_count 参数是列的宽度。'char_set_id' 参数是字符集 ID。
示例 2:演示 NLS_CHARSET_DECL_LEN。当使用多字节字符集时,返回 200 个字节列的字符个数。
SQL> SELECT NLS_CHARSET_DECL_LEN(200, NLS_CHARSET_ID('ja16eucfixed')) as a
2 FROM DUAL;
NLS_CHARSET_DECL_LEN(200,NLS_CHARSET_ID('JA16EUCFIXED'))
--------------------------------------------------------
100
SQL>
NLS_CHARSET_NAME(number)
NLS_CHARSET_NAME 函数返回字符集 ID 对应的字符集名称。字符集名称作为 VARCHAR2 值以数据库字符集返回。
若数字无法识别为字符集的 ID,则返回 null。
示例 3:演示 NLS_CHARSET_NAME。
SQL> SELECT NLS_CHARSET_NAME(2) FROM DUAL;
NLS_CH
------
WE8DEC
SQL>
返回数字值的字符函数
返回数字值的函数可以把任何字符类型作为其参数。它包括:
- ASCII
- INSTR
- LENGTH
- REGEXP_INSTR
ASCII(char)
ASCII 函数返回 char 第一个字符的数据库字符集的十进制表示。
char 可以是数据类型 CHAR、VARCHAR2、NCHAR 或 NVARCHAR2。返回值是 NUMBER 类型。若你的数据库字符集是 7 位 ASCII ,则该函数返回 ASCII 值;若数据库字符集是 EBCDIC 编码,则返回一个 EBCDIC 值。另外,没有相应的 EBCDIC 字符函数。
该函数不直接支持 CLOB 数据。但是,CLOB 数据可以隐式数据转换作为参数传递。
示例 4:演示 ASCII。返回 employees 表中字段 last names 以字母 L 开头的记录,L 的 ASCII 等价于 76。employees 表位于 Oracle OE schema。
SQL> SELECT last_name FROM employees WHERE ASCII(SUBSTR(last_name, 1, 1)) = 76;
LAST_NAME
-------------------------
Lorentz
Landry
Ladwig
Lee
Livingston
SQL>
INSTR(string,substring)
INSTR(string,substring,position)
INSTR(string,substring,position,occurrence)
INSTRB(string,substring)
INSTRB(string,substring,position)
INSTRB(string,substring,position,occurrence)
INSTRC(string,substring)
INSTRC(string,substring,position)
INSTRC(string,substring,position,occurrence)
INSTR2(string,substring)
INSTR2(string,substring,position)
INSTR2(string,substring,position,occurrence)
INSTR4(string,substring)
INSTR4(string,substring,position)
INSTR4(string,substring,position,occurrence)
REGEXP_INSTR(source_char,pattern)
REGEXP_INSTR(source_char,pattern,position)
REGEXP_INSTR(source_char,pattern,position,occurence)
REGEXP_INSTR(source_char,pattern,position,occurence,return_opt)
REGEXP_INSTR(source_char,pattern,position,occurence,return_opt,match_param)
REGEXP_INSTR(source_char,pattern,position,occurence,return_opt,match_param,subexpr)
INSTR 函数在 string 中检索 substring。该函数返回一个整数,指示 substring 在 string 中第一个匹配的位置。INSTR 利用由输入字符集自定义的字符计算字符串。INSTRB 使用字节,而不是字符。INSTRC 使用 Unicode 完整字符(Unicode complete characters)。INSTR2 使用 UCS2 编码点(UCS2 code points)。INSTR4 使用 UCS4 编码点(UCS4 code points)。
- position 是非零整数,指示 Oracle 数据库检索 string 中字符的开始位置。若 position 为负数,则 Oracle 从 string 末尾向后开始计算,并检索。
- occurrence 是整数,指示 Oracle 检索如何发生。occurrence 必须为正数。若 occurrence 大于 1,则数据库在 string 的第 occurrence 次检索到时返回。
string 和 substring 可以是任意数据类型 CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB 或 NCLOB。返回值为 NUMBER 数据类型。
position 和 occurrence 必须是 NUMBER 类型,或是任何可以隐式转换成 NUMBER 的数据类型,并必须解析为整数。position 和 occurrence 的默认值为 1,意味着,Oracle 从 string 第一个字符开始检索,substring 第一次检索到时发生。返回值时相对于 string 的开始位置,而不是相对于 position。若检索不成功,则返回 0。
REGEXP_INSTR 函数是 INSTR 函数关于正则表达式的扩展函数。
示例 5:演示 INSTR。
SQL> SELECT INSTR('CORPORATE FLOOR', 'OR') "Instring1",
2 INSTR('CORPORATE FLOOR', 'OR', 3, 2) "Instring2",
3 INSTR('CORPORATE FLOOR', 'OR', -3, 2) "ReversedInstring"
4 FROM DUAL;
Instring1 Instring2 ReversedInstring
---------- ---------- ----------------
2 14 2
SQL>
LENGTH(char)
LENGTHB(char)
LENGTHC(char)
LENGTH2(char)
LENGTH4(char)
LENGTH 函数返回 char 的长度。该函数利用由输入字符集定义字符的长度。LENGTHB 使用字节,而不是字符。LENGTHC 使用 Unicode 完整字符(Unicode complete characters)。LENGTH2 使用 UCS2 编码点(UCS2 code points)。LENGTH4 使用 UCS4 编码点(UCS4 code points)。
char 可以是 CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB 或 NCLOB 的任意类型。返回值是 NUMBER 类型。若 char 是 CHAR 类型,则长度包括所有空白。若 char 是 null,则返回 null。
LENGTHB 函数的限制:该函数仅支持单字节的 LOB。不能用在多字节字符节的 CLOB 和 NCLOB 数据上。
示例 6:演示 LENGTH。
SQL> SELECT LENGTH('CANDIDE') "Length in charactoers"
2 FROM DUAL;
Length in charactoers
---------------------
7
SQL>
TAG: