我有两张桌子。表A是操作存储,表B是目标表。
表A DDL: A列Varchar(1000)
表B DDL: B栏Varchar(250)
所以我试图插入截断的列A,如下所示: 插入表B(选择左(表a.column a,249)),但它给出了错误
“错误:字符类型的值太长”
我也试过substring尝试截断文本,但无济于事。请注意,A列中也有阿拉伯语文本 - 但它在表A中不是问题。
非常感谢任何帮助/建议!
答案 0 :(得分:3)
要解决多字节字符问题,可以使用:: VarChar([some length])将字段强制转换为所需的VarChar大小。举个例子,你可以这样做:
插入表B(选择表a.column a :: VarChar(250))
答案 1 :(得分:2)
问题是每个阿拉伯语符号占用超过1个字节,因为RedShift是Unicode DB。 varchar定义以字节为单位。因此,为了安全起见,您可以将所有内容划分为4.