关于Oracle数据库数据类型(1)——字符串类型

版权声明:本文为博主原创文章,未经博主允许不得转载,欢迎批评指正。 https://blog.csdn.net/Sandyxin5208/article/details/80394993

字符串类型

字符串分类

  对于字符串,首先需要了解的是字符串的编码格式,数据库中的字符串数据都通过字符集将字符转换为数字后(二进制),才存储到数据块中。通过不同的编码集(UNICODE格式、UTF-8、GBK等)转换,即便是相同的字符,也可能会转换成不同的二进制编码。不同的编码格式可以说决定了字符串在数据库中的存储结构,例如,如果数据库的编码方式为GBK,那么中文占据2个字节,但是UTF-8一般占据3个字节。
select * from nls_database_parameters where parameter ='NLS_CHARACTERSET';查询数据库的编码格式;

字符串类型主要分为以下几类:

  • CHAR类型  定长字符串,会用空格填充来达到其最大长度。
        CHAR字段最多可以存储2,000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。另外你可以指定它存储字节或字符,例如 CHAR(12 BYTE) CHAR(12 CHAR),如果指定存储字符,实际存储时就是转换为对应编码格式的字节数,只不过指定存储字符的方式更加直观,假设我们只想三个中文字符,直接写char(3 char)不用去计算需要多少个字节,省去一些计算的麻烦.

  • VARCHAR2类型  变长字符串,与CHAR类型不同,它不会使用空格填充至最大长度。
        VARCHAR2最多可以存储4,000字节的信息。

  • VARCHAR类型  目前是VARCHAR2的同义词,VARCHAR数据类型将计划被重新定义为一个单独的数据类型用于可变长度的字符串相比,具有不同的比较语义。所以最好不使用该类型。

  • NCHAR类型  这是一个包含UNICODE格式数据的定长字符串,也即是说它存储的字符串是运用UNICODE编码格式的,所有字符都用两个字节表示;

  • NVARCHAR2类型  包含UNICODE格式数据的变长字符串。 NVARCHAR2最多可以存储4,000字节的信息。

如何选择字符串类型

  • 数据长度一定,但是不包中文的,可以选择char类型。

  • 数据长度一定,但可能包括中文,可以选择nchar类型。

  • 数据长度不一定,存储只有英文、数字的最好用varchar

  • 数据长度不一定,也有可能有中文,可以选择nvarchar类型

字符串函数

  • 返回字符串首字母的ASCII码:ASCII(c);
  • 返回数字对应的ASCII字符:CHR(n);
  • 字符串的连接:concat(c1,c2);
  • 字符串中每个单词首字母大写,其它字母小写返回,单词由空格,控制字符,标点符号限制:INITCAP(C);
  • 返回字符串的长度:LENGTH(C)
  • 返回字符在字符串中首次出现的位置编号:INSTR(C1,[C2,[,j]])
  • 返回小写字符: LOWER(C1)
  • 返回大写字符:upper(c1)
  • LTRIM(C1,C2)将字符串c1最左边的字符c2去掉,不包含C2则保持不变;
  • replace(c1,c2[,c3]):用c3代替出现在c1中的c2返回;
  • substr(c1,[,j]):从第i位开始,截取长度为j的子字符串,如果j为空,则知道串的尾部
  • trim(c1)用于将字符串前后空格删除;

需要注意的点:对于定长的字符串,如果存储的字符串长度小于字符串设计的长度,会用空格填充,在我们取该字符串在后台程序中进行运用时,一般都需要在取数的时候就使用trim()函数取出该字符串前后的空格;

猜你喜欢

转载自blog.csdn.net/Sandyxin5208/article/details/80394993