--这句应该可以吧?insert into table2(Name) select cast(Name as varchar(40)) from Table1--这样可以解决汉字的问题啊:
select cast('中国' as varchar(2)),cast('中国' as varchar(3))--结果:中  
--证明处理正确处理汉字啊

解决方案 »

  1.   

    TO:zjcxc(邹建) 
       select cast(Name as varchar(40)) from Table1 得到的结果没有问题。就是不能插入到Table2中去,提示:String or binary data would be truncated.
    The statement has been terminated.
      

  2.   

    SUBSTRING ( expression , start , length ) 在这个函数中length 表示"字节"数,而varchar(40) 中的40则表示"字符"的个数,所以:
     用以下的语句则出错:
    insert into table2(Name) select substring(ltrim(rtrim(Name)),1,40) from Table1
    insert into table2(Name) select left(ltrim(rtrim(Name)),40) from Table1
      

  3.   

    try:
    insert into table2(Name) select substring(ltrim(rtrim(convert(varchar(40),Name)),1,21) from Table1
    insert into table2(Name) select left(ltrim(rtrim(convert(varchar(40),Name)),1,21)),40) from Table1
    不知道你明白我的意思没有,先转成varchar类型,然后再substring