Oracle Char类型 | 您所在的位置:网站首页 › 设置Oracle数据库不以字节计算长度 › Oracle Char类型 |
在本教程中将学习Oracle CHAR数据类型,它是一种固定长度的字符串类型。 Oracle CHAR数据类型简介Oracle CHAR数据类型用于存储固定长度的字符串。 CHAR数据类型可以存储1到2000字节的字符串。 要定义一个CHAR列,需要用字节或字符来指定一个字符串长度,如下所示: CHAR(length BYTE) CHAR(length CHAR)如果没有明确指定BYTE或CHAR,那么Oracle会默认使用BYTE。 如果像下面的例子那样不指定长度,那么长度的默认值是1。 column_name CHAR插入或更新固定长度字符串列时,Oracle将字符存储为固定长度数据。 这意味着如果存储的值的长度小于列中定义的最大长度,则Oracle将空格填充到最大长度的字符串。 如果插入一个长度大于列的值,Oracle会返回一个错误。 Oracle使用空格填充后来比较CHAR值。 Oracle CHAR例子下面来看看一些例子来理解CHAR数据类型的工作原理。 1. 空格使用的例子首先,创建一个由CHAR列(x)和VARCHAR2列(y)组成的新表t。 每列的长度是10个字节。 CREATE TABLE t ( x CHAR(10), y VARCHAR2(10) );其次,用x和y列的相同数据在t表中插入一个新行: INSERT INTO t(x, y ) VALUES('Oracle', 'Oracle');第三,通过使用以下查询验证插入: SELECT * FROM t执行上面示例代码,得到以下结果 - 以下语句从t表中检索数据: SELECT x, DUMP(x), y, DUMP(y) FROM t;执行上面查询代码,得到以下结果 - 在这个例子中,使用了DUMP()函数来返回x和y列的详细信息: 字符串Oracle需要6个字节。 但是,Oracle在字符串的右侧再填充4个空格,使x列的长度为10个字节。 y列的情况并非如此,因为y列的数据类型是可变长度字符串类型:(VARCHAR2)。 如果使用LENGTHB()函数来获取x和y列使用的字节数,则更加清楚: SELECT LENGTHB(x), LENGTHB(y) FROM t;执行上面查询代码,得到以下结果 - 2. 字符比较示例以下语句返回相同的结果: SELECT * FROM t WHERE x = 'Oracle'; SELECT * FROM t WHERE y = 'Oracle';但是,如果使用绑定变量,效果是不同的。考虑下面的例子: SQL> variable v varchar2(10) SQL> exec :v := 'Oracle'; PL/SQL procedure successfully completed.在这个代码块中,将v声明为具有VARCHAR2数据类型的绑定变量。 现在,使用v作为输入来与x列进行比较: SQL> select * from t where x = :v; no rows selected该语句返回一个空的结果集。以下查询使用v变量与y列进行比较: SQL> select * from t where y = :v; X Y ---------- ---------- Oracle Oracle它按预期返回了一行。这是因为在比较长度不等的字符类型的字符串时,Oracle使用非空格字符填充语义。 要使其工作,需要使用RTRIM()函数从CHAR数据中去除空格,然后将其与输入字符串进行比较,如下所示: SQL> select * from t where rtrim(x) = :v; X Y ---------- ---------- Oracle Oracle在本教程中,您已经了解了Oracle CHAR数据类型,并了解了CHAR列在空间使用和字符比较方面的行为。 上一篇: Oracle Float类型 下一篇: Oracle NChar类型 |
CopyRight 2018-2019 实验室设备网 版权所有 |