您的位置:首页 > 数据库 > Oracle

Oracle 内置数据类型 -- 字符

2014-12-07 19:48 141 查看
-- Start

CHAR

CREATE TABLE TEST
(
  -- 语法:CHAR [(size [BYTE | CHAR])]
  
  -- 默认长度(size)是 1,最大长度是 2000
  -- 默认修饰符是 BYTE, 但可以通过修改参数 NLS_LENGTH_SEMANTICS 来设置默认值为 CHAR
  -- SELECT * FROM NLS_SESSION_PARAMETERS WHERE PARAMETER='NLS_LENGTH_SEMANTICS'
  COL1 CHAR,
  
  -- 同 COL1 相同
  COL2 CHAR(1 BYTE),
  
  -- 根据数据库字符集的不同,CHAR 由 1 到 4 BYTE 组成,
  -- 所以如果你的数据库是此类字符集,那么推荐你使用 CHAR
  -- 由于性能的原因,Oracle 推荐我们不要指定长度修饰符,而是通过 NLS_LENGTH_SEMANTICS 来设置
  -- ALTER SESSION SET NLS_LENGTH_SEMANTICS=CHAR
  COL3 CHAR(10 CHAR)
);

-- 语法 1:''
-- 如果要输入单引号,用两个单引号代表一个单引号
INSERT INTO TEST VALUES ('a', '1', 'I''m bo');

-- 语法 2:q'delimiter XXX delimiter'
INSERT INTO TEST VALUES ('b', '2', q'/I'm bo/');
INSERT INTO TEST VALUES ('c', '3', Q'[I'm bo]');
INSERT INTO TEST VALUES ('d', '4', q'8I'm bo8');
INSERT INTO TEST VALUES ('e', '5', Q'KI'm boK');
INSERT INTO TEST VALUES ('f', '6', q'<I'm bo>');


VARCHAR2

CREATE TABLE TEST
(
  -- 语法:VARCHAR2(size [BYTE | CHAR])
  
  -- 如果 MAX_STRING_SIZE=STANDARD, 最大长度是 4000 bytes
  -- 如果 MAX_STRING_SIZE=EXTENDED, 最大长度是 32767 bytes
  -- 默认修饰符是 BYTE, 但可以通过修改参数 NLS_LENGTH_SEMANTICS 来设置默认值为 CHAR
  -- SELECT * FROM NLS_SESSION_PARAMETERS WHERE PARAMETER='NLS_LENGTH_SEMANTICS'
  COL1 VARCHAR2(10),
  
  -- 同 COL1 相同
  COL2 VARCHAR2(10 BYTE),
  
  -- 由于性能的原因,Oracle 推荐我们不要指定长度修饰符,而是通过 NLS_LENGTH_SEMANTICS 来设置
  -- ALTER SESSION SET NLS_LENGTH_SEMANTICS=CHAR
  COL3 VARCHAR2(10 CHAR)
);

-- 语法 1:''
-- 语法 2:q'delimiter XXX delimiter'
INSERT INTO TEST VALUES ('I''m bo', Q'[I'm bo]', q'/I'm bo/');
INSERT INTO TEST VALUES (q'8I'm bo8', Q'KI'm boK', q'<I'm bo>');


NCHAR

CREATE TABLE TEST
(
  -- 语法:NCHAR[(size)]
  
  -- 默认长度(size)是 1 个字符(char),最大长度是 2000 个字节(byte),注意是字节,
  -- 如果数据库编码 1 个字符由 2 个字节组成,那么最大长度是 1000 个字符
  COL1 NCHAR,
  
  -- NCHAR 列只能插入 UNICODE 编码的字符串,由于编码不同,CHAR 和 NCHAR 是不兼容的
  COL2 NCHAR(10)
);

-- 语法 1:N'xxx'
INSERT INTO TEST VALUES (n'a', N'尚波');

-- 语法2:NQ'delimiter XXX delimiter'
INSERT INTO TEST VALUES (n'a', nq'[尚波]');
INSERT INTO TEST VALUES (n'b', nq'8尚波8');
INSERT INTO TEST VALUES (n'c', nq'H尚波H');
INSERT INTO TEST VALUES (n'd', nq'/尚波/');


NVARCHAR2

CREATE TABLE TEST
(
    -- 语法:NVARCHAR2(size)
  
    -- NVARCHAR2 列只能插入 UNICODE 编码的字符串
    -- 如果 MAX_STRING_SIZE=STANDARD, 最大长度是 4000 bytes
    -- 如果 MAX_STRING_SIZE=EXTENDED, 最大长度是 32767 bytes
    COL1 NVARCHAR2(10)
);

-- 语法 1:N'xxx'
INSERT INTO TEST VALUES (N'尚波');

-- 语法2:NQ'delimiter XXX delimiter'
INSERT INTO TEST VALUES (nq'[尚波]');
INSERT INTO TEST VALUES (Nq'8尚波8');
INSERT INTO TEST VALUES (nQ'H尚波H');
INSERT INTO TEST VALUES (NQ'/尚波/');


--更多参见:Oracle SQL 精萃

-- 声明:转载请注明出处

-- Last edited on 2015-07-04

-- Created by ShangBo on 2014-12-07

-- End
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: