• 【Teradata】TD Unicode编码格式下varchar定义测试


    如下测试表,每个字段字符编码格式均为Unicode。

    1.varchar(1)可以存储1个汉字,也只能存储1个ASCII字符。

    --创建表nc_test,每个字段编码格式均设定为Unicode【使用SQLA工具,session字符集设定为UTF8或UTF16】
    CREATE
    MULTISET TABLENC_TEST , NO FALLBACK , NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM = DEFAULT, DEFAULT MERGEBLOCKRATIO, MAP = TD_MAP1 ( EWID VARCHAR(1) CHARACTER SET UNICODE CASESPECIFIC, NAME VARCHAR(1) CHARACTER SET UNICODE CASESPECIFIC, DWDESC VARCHAR(2) CHARACTER SET UNICODE CASESPECIFIC ) NO PRIMARY INDEX ;
    --插入数据【使用SQLA工具,session字符集设定为UTF8或UTF16】
    insert
    into NC_TEST values('A','','中国'); insert into NC_TEST values('A','中国','中国'); insert into NC_TEST values('A','中国人','中国'); insert into NC_TEST values('AA','中国人','中国');
    --查询结果【使用SQLA工具,session字符集设定为UTF8或UTF16】
    select * from NC_TEST;
    
    EWID   NAME     DWDESC
    --------------------------------------------------
    A     中    中国
    A     中    中国
    A     中    中国
    A     中    中国

    特别说明:上述SQLA工具,如果session使用字符集为ASCII,则定义为VARCHAR(60) CHARACTER SET UNICODE的字段,最终只能存入30个汉字(工具设定为UTF8或UTF16时可存入60个汉字)。

    建表的时候使用ASCII会导致表名和字段名中文Title乱码,实际插入数据时改为使用UTF8或UTF16数据仍然正常。

    CREATE MULTISET TABLE NC_TEST ,NO FALLBACK ,
         NO BEFORE JOURNAL,
         NO AFTER JOURNAL,
         CHECKSUM = DEFAULT,
         DEFAULT MERGEBLOCKRATIO,
         MAP = TD_MAP1
         (
          SQLA_CHARACTER varchar(20)  CHARACTER SET UNICODE CASESPECIFIC,
          EWID   VARCHAR(60)   CHARACTER SET UNICODE CASESPECIFIC
        
          ) 
    NO PRIMARY INDEX ;
    
    --SQLA连接session字符集选择ASCII,显示结果为:
    --如果为非保证金一户通模式,也区分两种模式,对于银行承兑汇票业
    insert into nc_test values ( 'ASCII','如果为非保证金一户通模式,也区分两种模式,对于银行承兑汇票业务,在核心系统也保存了每一张银票对应过的保证金担保金额,根据核心的数据,将对应保证金担保金额作为可缓释余额敞口金额进行缓释扣减。' ); --SQLA连接session字符集选择UTF8或者UTF16,显示结果为:
    --如果为非保证金一户通模式,也区分两种模式,对于银行承兑汇票业务,在核心系统也保存了每一张银票对应过的保证金担保金额,根据
    insert into nc_test values ( 'UTF-16','如果为非保证金一户通模式,也区分两种模式,对于银行承兑汇票业务,在核心系统也保存了每一张银票对应过的保证金担保金额,根据核心的数据,将对应保证金担保金额作为可缓释余额敞口金额进行缓释扣减。' );

     2.show table,字段长度与定义一致

    show TABLE NC_TEST
    
    CREATE MULTISET TABLE NC_TEST ,
         NO FALLBACK ,
         NO BEFORE JOURNAL,
         NO AFTER JOURNAL,
         CHECKSUM = DEFAULT,
         DEFAULT MERGEBLOCKRATIO,
         MAP = TD_MAP1
    (
          EWID VARCHAR(1) CHARACTER SET UNICODE CASESPECIFIC,
          NAME VARCHAR(1) CHARACTER SET UNICODE CASESPECIFIC,
          DWDESC VARCHAR(2) CHARACTER SET UNICODE CASESPECIFIC
    ) NO PRIMARY INDEX ;

    3. dbc.columnsv字典表中字段长度为定义的2倍

    select tablename,columnname,columnlength from dbc.columnsv
    where   trim(tablename) ='NC_TEST'
     
    tablename   columnname   columnlength
    --------------------------------------------------
     NC_TEST          NAME      2
     NC_TEST          EWID      2
     NC_TEST          DWDESC    4
  • 相关阅读:
    设置通过数字证书方式登录远程连接Linux服务器,禁止root账户远程密码方式远程连接服务器
    Windows server 2003 粘滞键后门+提权
    CVE-2017-7494复现 Samba远程代码执行
    SQL盲注学习-时间型
    SQL盲注学习-布尔型
    关于绿盟RSAS使用时遇到的问题
    SQL注入学习
    CentOS7,zabbix3.4通过,zabbix-Java-gateway监控Tomcat
    (转)输入pipt提示:AttributeError: 'module' object has no attribute 'HTTPSConnection'
    pip安装cx_Oracle报错:error code 1 in /tmp/pip-build-root/cx-Oracle
  • 原文地址:https://www.cnblogs.com/badboy200800/p/10785699.html
Copyright © 2020-2023  润新知