
5.1 字符函数
字符函数指用于对字符表达式进行处理的函数,它也是Oracle系统中被广泛使用的函数。在使用字符串函数时,其输入值一般是字符数据类型的,而其输出结果则是经过处理的字符表达式。
5.1.1 字符函数概述
在Oracle系统中,函数使用下列语法格式来表示。
FUNCTION(sting [, option])
上述代码中,函数本身为大写状态,其参数为小写状态。sting参数表示文本字符串或字符串列的名称,其中文本字符串需要使用单引号括起来;而参数option为非必选参数。
例如,使用转换大小写的函数LOWER,其语法格式为:
LOWER(sting)
如若转换某个具体字符串,则需要将字符串放置在函数的位置,例如:
LOWER('CMT')
此时,该函数的输出结果为“CMT”。由于直接使用了字符串,所以需要使用单引号括起来。除此之外,该函数还可以直接使用表列名称进行转换,使用列名称时无须使用单引号。
一般情况下,用户可以使用的字符函数如下表所示。实际上,这些字符函数在许多编程语言中都可以使用。

5.1.2 常用的字符串函数
为了更好地理解这些字符函数,下面通过一些常用函数示例,详细介绍字符函数的用法。
1. ASCII()和CHR()函数
ASCII()函数可以返回某个字符的ASCII码值;CHR()函数则与其相反,它返回给出ASCII码值所应的字符。这两个函数在判断某个字符时经常会用到。
下面的示例演示了ASCII()和CHR()函数的使用方法。

如果在ASCII()函数中包含了多个字符,则只返回第一个字符的ASCII值。
2. CONCAT()函数
CONCAT(X,Y)函数用于连接字符串X和Y,并形成新的字符串。这种连接是紧密连接,两个字符串的连接之间没有空格等分隔字符。
下面的示例使用CONCAT()函数把EMP表中的MGR和JOB列连接起来。

3. INITCAP()函数
INITCAP(X)函数表示把字符串X中的所有英文单词转换为首字母大写的形式。不过,这种函数对汉字没有影响。
例如,下面的示例为对字符串进行处理,将字符串的第一个字母变为大写。

4. INSTR()函数
INSTR(X,FIND_STRING[,START][,OCCURRENCE])函数在字符串X中搜索FIND_STRING字符,并返回其位置。如果使用了可选参数START和OCCURRENCE,那么表示从START位置开始当第OCCURRENCE次返回FIND_STRING字符串时才返回其位置。
例如,下面的示例将搜索字符A的位置。

5. LOWER()和UPPER()函数
LOWER(X)和UPPER(X)函数也是一对常用的函数,前一个函数将字符串X转变成小写字母,后一个函数则相反,将字符串X全部转变为大写字母。
例如,下面的语句分别使用LOWER()和UPPER()函数,将数据转换成小写字母和大写字母。

6. LTRIM()、RTRIM()和TRIM()函数
LTRIM()、RTRIM()和TRIM()函数都是用来删除指定字符串周围的字符的。LTRIM(X[,TRIM_STRING])函数用于删除字符串X左边的字符,如果使用了可选的TRIM_STRING参数,那么将删除字符串X左边的TRIM_STRING字符串;如果没有指定TRIM_STRING参数,那么删除字符串X左边的空格。RTRIM()函数与此类似,只是方向在右边。TRIM()函数则删除字符串两端的字符串。
例如,下面的语句分别使用LTRIM()、RTRIM()和TRIM()函数处理字符串。

7. RPAD()和LPAD()函数
RPAD()函数用于填充列右侧的字符,其填充字符为任意字符,其语法格式为:
RPAD(string,length[, 'set'])
而LPAD()函数则用于填充列左侧的字符,其填充字符为任意字符。
LPAD(string,length[, 'set'])
在上述语法格式中,参数string表示字符或字符类型的列,参数length表示字符长度,而参数set则表示需要填充的字符。如果省略方括号中的内容,该函数则会直接填充空格。
例如,下面的语句中将使用RPAD()函数,在表列的右侧填充长度为5的虚点。

8. LENGTH()函数
LENGTH()函数用于返回指定字符串的长度,长度值包含字母、空格和任何其他字符。
例如,下面的语句中使用了LENGTH()函数,返回了REPORT_DTE列中字符串的长度。

提示:
LENGTH()函数还可以作为WHERE或ORDER BY子句,以及其他函数一部分参与计算。
9. SUBSTR()函数
SUBSTR()函数用于提取指定字符串中的部分字符串,该函数的语法格式为:
SUBSTR(string,start[, count])
上述语法格式中,参数string表示指定的字符串,参数start表示提取字符串的起始位置,参数count表示字符串的长度,如果省略count,该函数将从start位置提取到字符串末尾。
例如,下面的语句中使用了SUBSTR()函数,提取了REPORT_DTE列中字符串的第二个字符后的4个字符。
SQL> select substr(report_dte,2,4) from report; SUBSTR(R -------- 8-9月 8-9月 7-9月 7-9月 6-9月 6-9月 7-9月 7-9月 已选择8行。