在Trafodion数据库,当咱们设定一个字段类型为字符类型的时候(如CHAR或VARCHAR),字符编码会以数据库默认的字符编码为准。数据库
好比下面例子,建立有一个字符类型字段的表,经过SHOWDDL命令能够看到这个字段的编码方式为ISO88591。编码
SQL>drop table seabase.test_chinese; create table seabase.test_chinese (rol_a varchar(10)); showddl seabase.test_chinese; --- SQL operation complete. SQL> --- SQL operation complete. SQL> CREATE TABLE TRAFODION.SEABASE.TEST_CHINESE ( ROL_A VARCHAR(10) CHARACTER SET ISO88591 COLLATE DEFAULT DEFAULT NULL SERIALIZED ) ; --- SQL operation complete.
此时若是想插入中文字符会报错,解决方法就是修改字符的编码类型为UTF8。code
SQL>insert into seabase.test_chinese values('中国'); *** ERROR[8690] An invalid character value encountered in TRANSLATE function. [2016-10-25 06:22:47] SQL>alter table seabase.test_chinese alter column rol_a varchar(10) character set utf8; --- SQL operation complete.
如今咱们再经过SHOWDDL查看字段属性已修改成UTF8类型,这时插入中文字符成功。io
SQL>showddl seabase.test_chinese; CREATE TABLE TRAFODION.SEABASE.TEST_CHINESE ( ROL_A VARCHAR(10 CHARS) CHARACTER SET UTF8 COLLATE DEFAULT DEFAULT NULL SERIALIZED /*altered_col*/ ) ; --- SQL operation complete. SQL>insert into seabase.test_chinese values('中国'); --- 1 row(s) inserted. SQL>select * from seabase.test_chinese; ROL_A ---------------------------------------- 中国 --- 1 row(s) selected.
固然咱们也能够在建表的时候直接定义字段类型为UTF8,方法以下:字符编码
SQL>create table test_chinese(rol_a varchar(10) character set utf8); --- SQL operation complete. SQL>showddl test_chinese; CREATE TABLE TRAFODION.SEABASE.TEST_CHINESE ( ROL_A VARCHAR(10 CHARS) CHARACTER SET UTF8 COLLATE DEFAULT DEFAULT NULL NOT SERIALIZED ) ATTRIBUTES ALIGNED FORMAT ; --- SQL operation complete.