开发手册 欢迎您!
软件开发者资料库

PL / SQL - 字符串

PL / SQL字符串 - 从PL / SQL语法,环境设置,操作符,事务,日期和时间,数据类型,变量,常量,记录,条件语句,迭代语句,游标开始,简单易学地学习PL / SQL编程,过程,函数,异常处理,触发器,包,集合,外部过程,数组,字符串,dbms输出。

PL/SQL中的字符串实际上是具有可选大小规范的字符序列.字符可以是数字,字母,空白,特殊字符或所有字符的组合. PL/SQL提供三种字符串 :

  • 定长字符串 : 在这样的字符串中,程序员在声明字符串时指定长度.字符串右边用空格填充指定的长度.

  • 可变长度字符串 : 在这样的字符串中,字符串的最大长度最大为32,767,并且不会发生填充.

  • 字符大对象(CLOB) : 这些是可变长度的字符串,最多可达128 TB.

PL/SQL字符串可以是变量或文字.字符串文字用引号括起来.例如,

'This is a string literal.' Or 'hello world'


要在字符串文字中包含单引号,您需要在彼此旁边键入两个单引号.例如,

'this isn''t what it looks like'


声明字符串变量

Oracle数据库提供了许多字符串数据类型,例如CHAR,NCHAR,VARCHAR2,NVARCHAR2,CLOB和NCLOB.前缀为'N'的数据类型是'国家字符集'数据类型,用于存储Unicode字符数据.

如果需要要声明一个可变长度的字符串,您必须提供该字符串的最大长度.例如,VARCHAR2数据类型.以下示例说明了声明和使用一些字符串变量 :

DECLARE    name varchar2(20);    company varchar2(30);    introduction clob;    choice char(1); BEGIN    name := 'John Smith';    company := 'Infotech';    introduction := ' Hello! I''m John Smith from Infotech.';    choice := 'y';    IF choice = 'y' THEN       dbms_output.put_line(name);       dbms_output.put_line(company);       dbms_output.put_line(introduction);    END IF; END; /


当在SQL提示符下执行上述代码时,它会产生以下结果 :

John Smith InfotechHello! I'm John Smith from Infotech.  PL/SQL procedure successfully completed


要声明固定长度的字符串,请使用CHAR数据类型.在这里,您不必为固定长度变量指定最大长度.如果不使用长度约束,Oracle数据库将自动使用所需的最大长度.以下两个声明是相同的 :

red_flag CHAR(1) := 'Y';  red_flag CHAR   := 'Y';


PL/SQL字符串函数和运算符

PL/SQL提供串联运算符(||) 用于连接两个字符串.下表提供了由PL/SQL提供的字符串函数 :

S.No功能&目的
1

ASCII(x);

返回字符x的ASCII值.

2

CHR(x);

返回ASCII值为x的字符.

3

CONCAT(x,y);

连接字符串x和y并返回附加的字符串.

4

INITCAP(x);

将x中每个单词的首字母转换为大写并返回该字符串.

5

INSTR(x,find_string [,start] [,出现]);

Se x中的 find_string 的拱门并返回它出现的位置.

6

INSTRB(x);

返回位置另一个字符串中的字符串,但返回以字节为单位的值.

                         7

LENGTH(x);

返回的数量x中的字符.

8

LENGTHB(x);

返回长度单字节字符集的字节字符串(字节).

                        9

LOWER(x);

转换字母x为小写并返回该字符串.

10

LPAD(x,width [,pad_string]);

Pads x 左边有空格,以使字符串的总长度达到宽度字符.

11

LTRIM(x [,trim_string]);

修剪 x 左侧的字符.

                        12

NANVL(x,value);

返回值如果x匹配NaN特殊值(不是数字),否则返回 x .

13

NLS_INITCAP(x);

与INITCAP相同函数除了它可以使用NLSSORT指定的其他排序方法.

                     14

NLS_LOWER(x);

与LOWER相同函数除了它可以使用NLSSORT指定的其他排序方法.

                     15

NLS_UPPER(x);

与UPPER相同函数除了它可以使用NLSSORT指定的其他排序方法.

     16

NLSSORT(x);

更改方法排序字符.必须在任何NLS函数之前指定;否则,将使用默认排序.

17

NVL(x,value);

返回值如果 x 为空;否则,返回x.

18

NVL2(x,value1,value2);

如果x不为null,则返回value1;如果x为null,则返回value2.

      19

REPLACE(x,search_string,replace_string);

搜索 x 搜索search_string并将其替换为replace_string.

      20

RPAD(x,width [,pad_string]);

Pads 在右边。

     21

RTRIM(x [,trim_string]);

从右边修剪 x .

     22

SOUNDEX(x);

返回包含的字符串 x 的语音表示.

     23

SUBSTR(x,start [,length]);

返回从b指定的位置开始的 x 的子字符串.可以提供子字符串的可选长度.

24

SUBSTRB(x);

与SUBSTR相同除外参数以字节而不是单字节字符系统的字符表示.

25

TRIM([trim_char FROM)x);

修剪 x 左右两侧的字符.

     26

UPPER(x);

转换字母x为大写并返回该字符串

现在让我们来研究一下几个例子来理解概念 :

示例1

DECLARE    greetings varchar2(11) := 'hello world'; BEGIN    dbms_output.put_line(UPPER(greetings));        dbms_output.put_line(LOWER(greetings));        dbms_output.put_line(INITCAP(greetings));        /* retrieve the first character in the string */    dbms_output.put_line ( SUBSTR (greetings, 1, 1));        /* retrieve the last character in the string */    dbms_output.put_line ( SUBSTR (greetings, -1, 1));        /* retrieve five characters,        starting from the seventh position. */    dbms_output.put_line ( SUBSTR (greetings, 7, 5));        /* retrieve the remainder of the string,       starting from the second position. */    dbms_output.put_line ( SUBSTR (greetings, 2));         /* find the location of the first "e" */    dbms_output.put_line ( INSTR (greetings, 'e')); END; /


当在SQL提示符下执行上述代码时,它会产生以下结果 :

HELLO WORLD hello world Hello World h d World ello World 2  PL/SQL procedure successfully completed.


示例2

DECLARE    greetings varchar2(30) := '......Hello World.....'; BEGIN    dbms_output.put_line(RTRIM(greetings,'.'));    dbms_output.put_line(LTRIM(greetings, '.'));    dbms_output.put_line(TRIM( '.' from greetings)); END; /


当在SQL提示符下执行上述代码时,它会产生以下结果 :

......Hello World  Hello World..... Hello World  PL/SQL procedure successfully completed.