50分求一奇怪问题:有关left函数。
declare @YJTicketNo varchar(1000)
.
.
.
.
.
--中间过程给 @YJTicketNo 赋值。值是:退票 2333963 2333964 2333965 2333966 2333967 2333968 2333969 2333970 2333971 2333972 2333973 2333974 2333975 2333976 2333977 2333978 2333979 2333980 2333981 2333982 2333983 2333984 2333985 2333986 2333987 2333988 2333989 2333990 2333991 2333992 2333993 2333994 废票 2360116 废号
.--超过254个字符的。
.
set @YJTicketNo=left(@YJTicketNo,254)
--插入表。
insert into dd106(BalYear,BalMonth,BalDay,BalDate,UserCode,TRID,BCTSSSCode,BCTSFlag,BeginTicketNo,EndTicketNo,
QRMBQP,QRMBBP,QRMBYFP,QRMBZFP,QRMBTP,QRMBSXFP,QHKDQP,QHKDBP,QHKDYFP,QHKDZFP,QHKDTP,QHKDSXFP,QFH,
SRMBQP,SRMBBP,SRMBYFP,SRMBTP,SRMBSXFP,SRMB,SHKDQP,SHKDBP,SHKDYFP,SHKDTP,SHKDSXFP,SHKD,YJTicketNo)
values(@DateYear,@DateMonth,@DateDay,@BalDate,@UserCode,@TRID,null,0,@minSTID,@maxSTID,
@QRMBQP,@QRMBBP,@QRMBYFP,@QRMBZFP,@QRMBTP,@QRMBSXFP,@QHKDQP,@QHKDBP,@QHKDYFP,@QHKDZFP,@QHKDTP,@QHKDSXFP,@QFH,
@SRMBQP,@SRMBBP,@SRMBYFP,@SRMBTP,@SRMBSXFP,@SRMB,@SHKDQP,@SHKDBP,@SHKDYFP,@SHKDTP,@SHKDSXFP,@SHKD,@YJTicketNo)
------------------
表dd106, YJTicketNo 字段是varchar(254)
这样执行时会报错:
服务器: 消息 8152,级别 16,状态 9,行 228
String or binary data would be truncated.
The statement has been terminated.
但是当我这行改成
set @YJTicketNo=left(@YJTicketNo,252)时就通过。
问:为什么会出现这种情况?