desc user_tab_columns Name Type Nullable Default Comments ----------------------------------------------------------------- DATA_LENGTH NUMBER Length of the column in bytes--注意这里 ...... SQL> create table ttt( col_1 CHAR(11), col_2 VARCHAR2(30)); SQL> select COLUMN_NAME,DATA_TYPE,DATA_LENGTH 2 from user_tab_columns 3 where table_name='TTT';
char类型的长度单位分成byte和char,没有指定的话默认就是byte
查询出问题是什么错误信息?
desc user_tab_columns
Name Type Nullable Default Comments
-----------------------------------------------------------------
DATA_LENGTH NUMBER Length of the column in bytes--注意这里
......
SQL> create table ttt( col_1 CHAR(11), col_2 VARCHAR2(30));
SQL> select COLUMN_NAME,DATA_TYPE,DATA_LENGTH
2 from user_tab_columns
3 where table_name='TTT';
COLUMN_NAME DATA_TYPE DATA_LENGTH
------------------------------ -------------------------------------------------------------------------------- -----------
COL_1 CHAR 11
COL_2 VARCHAR2 30
SQL> create table tttt(col_1 char(11 char),col_2 varchar2(30 char));
Table created
SQL>
SQL> select COLUMN_NAME,DATA_TYPE,DATA_LENGTH
2 from user_tab_columns
3 where table_name='TTTT'
4 /
COLUMN_NAME DATA_TYPE DATA_LENGTH
------------------------------ -------------------------------------------------------------------------------- -----------
COL_1 CHAR 22
COL_2 VARCHAR2 60
用于保存定长(size)字节的字符串数据。
每行定长(不足部分补为空格);最大长度为每行2000字节,缺省值为每行1字节。设置长度(size)前需考虑字符集为单字节或多字节。数据库字符集在创建后原则上不能更改。不过有2种方法可行。
1. 如果需要修改字符集,通常需要导出数据库数据,重建数据库,再导入数据库数据的方式来转换。
2. 通过ALTER DATABASE CHARACTER SET语句修改字符集,但创建数据库后修改字符集是有限制的,只有新的字符集是当前字符集的超集时才能修改数据库字符集,例如UTF8是US7ASCII的超集,修改数据库字符集可使用ALTER DATABASE CHARACTER SET UTF8。