ALTER语句:为什么VARCHAR2(50 BYTE)而不是VARCHAR2(50 CHAR)?

时间:2013-02-28 13:03:45

标签: sql oracle character-encoding oracle11g

我执行了以下(Oracle 11g)SQL语句,将增加现有列的长度从VARCHAR2(20 CHAR)增加到VARCHAR2(50 CHAR):

ALTER TABLE USERX.MY_TABLE MODIFY (LASTNAME VARCHAR2(50));

成功没有发生任何事故,但当我查看新的Data Type列时,我看到:VARCHAR2(50 BYTE)而不是VARCHAR2(50 CHAR)

我的问题是:

  1. 为什么 BYTE 而不是CHAR?我做错了什么?
  2. 如何将列的长度修改为VARCHAR2(100 CHAR)

1 个答案:

答案 0 :(得分:11)

回答自己(感谢提供的提示by this other answer):

我本应该执行:

ALTER TABLE USERX.MY_TABLE MODIFY (LASTNAME VARCHAR2(50 CHAR));

(注意50后的额外CHAR