字符型函数
以下函数全都接收的是字符族类型的参数 (CHR 除外),其中大部分返回字符类型数据,小部分返回数字类型数据。
1. SUBSTR 函数。
该函数提供截取字符串的功能,而且该函数有很多的扩展形式,其具体语句结构是 {[SUBSTR]|[SUBSTRB]|[SUBSTRC]|[SUBSTR2]|[SUBSTR4]}(char,position[,substring_length])
。
各参数表示含义如下:
SUBSTR:以字符为单位。
SUBSTRB:以字节为单位。
SUBSTRC:以 unicode 字符为单位。
SUBSTR2:以 UCS2 代码点为单位。
SUBSTR4:以 UCS4 代码点为单位。
char:原始字符串。
position:要截取字符串的开始位置。初始为 1,如果该值为负数,则表示从 char 的右边算起。
substring_length:截取的长度。
具体的示例脚本如下,这里仅以 SUBSTR
操作为例。
select substr('ABCDE我FGHI', 5, 2), substr('ABCDE我FGHI', -5, 2)
from dual;
2. LENGTH 函数。
该函数可以得到指定字符串的长度,返回类型是数字。
同样的,LENGTH 函数也具有扩展形式,具体结构是 {[LENGTH]|[LENGTHB]|[LENGTHC]|[LENGTH2]|[LENGTH4]}(char)
,各项参数含义可以参考前面介绍过的函数,这里不再过多解释,其中 char 是参数。
具体的示例脚本如下,这里仅以 LENGTH
操作为例。
select length('ABCDE我FGHI')
from dual;
3. CONCAT(char1,char2) 函数。
该函数连接两个参数并返回。char2 将连接到 char1 的尾部。效果和连接符 ||
相似。
参数类型可以是 CHAR
、 VARCHAR2
、 NCHAR
、 NVARCHAR2
、 CLOB
、 NCLOB
。
示例脚本如下:
select concat('我的', '测试!'), '我的' || '测试!'
from dual;
4. INSTR 函数。
该函数可以让我们在指定的字符串中搜索是否存在另一个字符串。
其具体语句结构是 {[INSTR]|[INSTRB]|[INSTRC]|[INSTR2]|[INSTR4]}(string,substring[,position[,occurrence]])
。
该函数也具有扩展形式,各项参数表示含义如下:
INSTR:以字符为单位。
INSTRB:以字节为单位。
INSTRC:以 unicode 字符为单位。
INSTR2:以 UCS2 代码点为单位。
INSTR4:以 UCS4 代码点为单位。
string:待搜索的字符串。
substring:要搜索的字符串。
position:搜索的开始位置,默认为 1,表示字符串左边第一个位置;如果为负数,则表示字符串的右边位置为起始位置。
occurrence:substring 第几次出现,默认是 1。
具体的示例脚本如下,这里仅以 INSTR
操作为例。
select instr('this is a 测试!', '测'), instr('this is a 测试!', 's', -1)
from dual;
5. UPPER(char) 函数。
该函数将指定的参数全部转换成大写字母。
参数类型可以是 CHAR
、 VARCHAR2
、 NCHAR
、 NVARCHAR2
、 CLOB
、 NCLOB
。
示例脚本如下:
select upper('c'), upper('abcd'), upper('this is a test')
from dual;
6. LOWER(char) 函数。
该函数将指定的参数全部转换成小写字母。
参数类型可以是 CHAR
、 VARCHAR2
、 NCHAR
、 NVARCHAR2
、 CLOB
、 NCLOB
。
示例脚本如下:
select lower('A'), lower('ABCD'), lower('THIS IS A TEST')
from dual;
7. INITCAP(char) 函数。
该函数参数的所有单词首字母转换成大写字母。
参数类型可以是 CHAR
、 VARCHAR2
、 NCHAR
、 NVARCHAR2
。
示例脚本如下:
select initcap('this is a test')
from dual;
8. REPLACE 函数。
函数具体语法结构是 REPLACE(char,search_string[,replacement_string])
,是一个替换字符串的函数。
函数中有三个参数,具体代表的含义如下:
char:表示搜索的目标字符串。
search_string:在目标字符串中要搜索的字符串。
replacement_string:该参数可选,用它可替代被搜索到的字符串,如果该参数不用,则表示从 char 参数中删除 search_string 字符串。
具体的示例脚本如下:
select replace('this is a test', 'tes', 'resul')
from dual;
9. TRIM 函数。
该函数将删除指定的前缀或尾随的字符,默认删除空格。
其具体语法结构是 TRIM([LEADING|TRAILING|BOTH](trim_character FROM)trim_source)
,各参数介绍如下:
LEADING:删除 trim_source 的前缀字符。
TRAILING:删除 trim_source 的后缀字符。
BOTH:删除 trim_source 的前缀和后缀字符。
trim_character:删除的指定字符,默认删除空格。
trim_source:被操作的字符串。
具体的示例脚本如下:
select trim(trailing 't' from 'test'), trim('test')
from dual;
10. RTRIM(char[,set]) 函数。
与 RPAD
函数相反,该函数会提供将 char
右边出现在 set
中的字符删除掉。
如果 set
没有,则默认删除空格。
具体的示例脚本如下:
select rtrim('test'), rtrim('test*ffs', 'fs*')
from dual;
11. LTRIM(char[,set]) 函数。
与 RTRIM
函数相似,该函数会提供将 char
左边出现在 set
中的字符删除掉。
如果 set
没有,则默认删除空格。
具体的示例脚本如下:
select ltrim('ftest', 'f')
from dual;
12. CHR(n[USING NCHAR_CS]) 函数。
根据相应的字符集,把给定的 ASCII
码转换为字符。 USING NCHAR_CS
指明字符集。
以下示例用默认字符集,示例脚本如下:
select chr(65) || chr(66) || chr(67) abc, chr(54678)
from dual;
13. ASCII(char) 函数。
返回参数首字母的 ASCII
码值。与 CHR
函数相反。参数 char
的类型可以是 CHAR
、 VARCHAR2
、 NCHAR
或 NVARCHAR2
。
该返回值总是以用户使用的字符集为基础的,如果用户的数据库字符集是 7 位的 ASCII
值,那就得到一 ASCII
码值。
示例脚本如下:
select ascii('明'), ascii('Adb'), ascii('ABC')
from dual;