1、字符串类型:

  有四种字符串类型:Char、NChar、Varchar2,Nvarchar2,其中Char为固定长度的字符串类型,带'N'的为国家字符集。

1)、Varchar2数据类型:可变长度的字符串,最大长度为32767字节。

  声明:variable_name varchar2(max_length[CHAR | BYTE]);

   说明:使用CHAR这个限定词的,最终这个字符串的字节数量是根据数据库字符集表示一个字符所使用的最大的字节数决定的,比如Unicode UTF-8字符集最多      用3个字节来表示一个字符。

  如果忽略Char或者Byte限定符,长度字节计算取决于数据库初始化参数Nls_Llength_semantics决定。

  如:Declare small_string varchar2(4),line_of_text varchar(2000);

    feature_name varchar2(100 byte)--100个字节的字符串

    emp_name varchar2(20 char) --20个字符的字符串。

  保存到数据库中的字符串长度,最长最好不要超过4000个,超过了,最好使用CLOB(字符大对象)保存。

2)、CHAR数据类型:固定长度的字符串,如果给这种类型的变量赋值没有达到所需的长度,PL/SQL会自动用空格右补齐处理。

  char(100 char) 100个字符。

  char(100 byte) 100个字节。

  char 1个字节的字符串。

3)、String子类型:

  常用的子类型有String 、Varchar 等价于Varchar2。varchar子类型Oracle公司计划改变这个类型的意思,以后尽量不要使用这种类型。

2、使用字符串。

 1)、字符串常量:单引号里面一串字符,就是一个字符串常量。

  常用的表示方式:q'{Are't you glad you're learing PL/SQL with O'reilly?}',如果字符串常量中不包含单引号,就可以直接放在单引号里面就可以了,其中'{}'为分隔符,分隔符可以用'!!','[]','()','<>'代替使用。

  Length函数可以计算出字符串常量的字符个数,length('brighten the corner where you are') 为34个字符;

2)、不可打印字符:Chr函数,chr(10)为换行符,NVL2函数可以清空空白行,可以和chr(10)函数混合使用。

  如:select name || nvl2(address1,chr(10) || address1,'')

       || nvl2(address2,chr(10) || address2,'')

       As company_address from company.

  AscII 函数是CHr函数的逆函数。

3)、拼接字符串:

  两种方法:Concat函数和拼接操作符('||'两个竖线),常用的是拼接操作符。

  a、concat(string1,string2),其中一个为null,则返回哪个不为null的,都为null,返回null,此函数只能拼接两个字符串。

  b、string1 || string2.可以连接多个字符串。

4)、处理大小写:

a、强制字符串全部大写或者小写方式,忽略大小写的区别,使用Upper函数,或者Lower函数统一转换后比较。

b、设置系统不区分大小写:oracle 10g R2版本以后,可以设置初始化参数Nls_comp 和Nls_sort让所有字符串比较忽略大小写的区别,

  方法:Alter session set Nls_comp=Linguistic

       Alter session set Nls_sort = Binary_ci

  设置以后比较字符串大小写都不区分了,不过这样做会对索引有影响,设置这个以后,对某个列做的索引就消失掉了,必须重新建立新索引。

c、字符串每个单词首字母大写:函数Initcap,可以把每个单词的首字母变成大写,其他都是小写的。

  Initcap(‘MATT williams')  -----结果为:Matt Williams。

 5)、传统的检索、提取和替换

  Instr函数,返回一个字符串在另外一个大字符串的位置,instr(name,',',2)---检索name中','的位置,从第二个位置开始检索。

  SubStr函数,截取函数,substr(name,开始位置,结束位置),name需要截取的字符串。

  Replace函数,替换函数,Replace(name,',',chr(10)),把name中所有逗号替换成换行符。

6)、补齐字符串:

  Lpad左边补空格,Rpad右边补空格,也可以用其他字符串补齐。

  如:Lpad('jeff',10,'.')  ---- .......jeff

    Rpad('erric',10,'.')  ----erric.....

  如果字符串原来的长度大于补齐的长度,就会被裁减掉。

  裁减函数:Trim,LTrim,RTrim函数,功能有点类似于Replace函数,

  如:Trim('this is a sentance .....','.')-----this is a sentance

    LTrim 左trim掉,RTrim 右trim掉对应的字符。

   直接这样写:Trim('this is a sentens    ')---右边空格是会Trim掉,=Trim('this is ','').

7)、正则表达式的检索、提取和替换:

   regexp_like函数,返回匹配正则表达式是否匹配成功,Regexp_like(names,'正则表达式')返回true或者false。

  Regex_Instr函数,返回匹配成功的字符串的位置,Regexp_Instr(name,'正则表达式',开始位置Index),返回匹配成功的位置数字。

8)、空字符串:Oracle中把空字符串当做null处理,和其他数据库不同。

9)、Char类型和Varchar2类型,区别就在于Char会自动补空格的,varchar2不会,在进行数据库插入,更新操作的时候,注意空格的是否存在,以及进行字符串比较的时候,也要注意空格字符的存在。建议尽量少用Char类型。

3、字符串函数快速参考

ASCII(single_character) 返回指定字符串的ASCII编码

CHR(code_location)传入ASCII编码值返回对应的 VARCHAR2类型的值,是ASCII函数的逆函数。

 

 

 

 

 

 

posted on 2013-06-27 16:05  Kelly_HanShuai  阅读(259)  评论(0)    收藏  举报