一个关于字符串截取的问题,大家帮看看

夏芝麻 2015-09-29 11:52:46
insert into Table1 (F1, F2.... ) select f1, f2, ..... from Table2

因为table2 中的 一些字符串 字段比 table1 长一些

比如 F1 ,char (20) , f1 Char(30).....

于是就这样写上面语句

insert into Table1 (F1, F2.... ) select Substring(f1, 1, 20), f2, ..... from Table2

但是还是总显示 :
将截断字符串或二进制数据。
语句已终止。

问问各位大神这个地方怎么写才能通过
...全文
133 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zbdzjx 2015-09-30
  • 打赏
  • 举报
回复
引用 5 楼 jie101 的回复:
[quote=引用 1 楼 zbdzjx 的回复:] 试一下: insert into Table1 (F1, F2.... ) select convert(char(20),f1), f2, ..... from Table2
这个还真不是有其他没处理到的问题,,所有字符字段都一一对比过了,可能还是需要1楼那样得强制转换下,按一楼的写法,基本没问题,不知道是不是版本问题,我的是 2000 的数据库。谢谢各位![/quote] 应该是f1这个字段里有中文吧,我测试了,如果有中文,Substring会将一个中文字的长度当成1来处理。
夏芝麻 2015-09-30
  • 打赏
  • 举报
回复
引用 1 楼 zbdzjx 的回复:
试一下: insert into Table1 (F1, F2.... ) select convert(char(20),f1), f2, ..... from Table2
这个还真不是有其他没处理到的问题,,所有字符字段都一一对比过了,可能还是需要1楼那样得强制转换下,按一楼的写法,基本没问题,不知道是不是版本问题,我的是 2000 的数据库。谢谢各位!
吉普赛的歌 2015-09-29
  • 打赏
  • 举报
回复
引用 2 楼 szx1999 的回复:
LZ写法是没问题的,问题在于,还有些列没处理到。把所有超长的列都截取为适当的长度,就不会报这种错了。
2楼所言极是, 应该还有些列的宽度不一致, 应该全部对比一遍。
yooq_csdn 2015-09-29
  • 打赏
  • 举报
回复
insert Table1 (F1) select cast(Substring(f1, 1, 20) as char(20)) from Table2 长度不一样的列,都要单独测试一下。另外截断后再强制转换一下。
等不到来世 2015-09-29
  • 打赏
  • 举报
回复
LZ写法是没问题的,问题在于,还有些列没处理到。把所有超长的列都截取为适当的长度,就不会报这种错了。
zbdzjx 2015-09-29
  • 打赏
  • 举报
回复
试一下: insert into Table1 (F1, F2.... ) select convert(char(20),f1), f2, ..... from Table2

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧