消息 8152,级别 16,状态 2,第 1 行 将截断字符串或二进制数据。

aotian16 2020-04-11 04:30:02
Create Table #TmpBillCheckList(
FExplanation varchar(255) default(' ') )

go
insert into #TmpBillCheckList( FExplanation )
select a.FExplanation
from t_rp_newReceiveBill a
inner join t_rp_arbillofsh c on a.FBillID=c.FBillID
join t_rp_contact b on a.FBillID=b.FBillID
left join t_currency cur on a.FCurrencyID=cur.FCurrencyID
left join t_item i on a.FCustomer=i.FItemID
left join t_item ii on a.FDepartment=ii.FItemID
left join t_item iii on a.FEmployee=iii.FItemID
left join t_user s on a.FPreParer=s.FUserID
left join t_user t on a.FChecker=t.FUserID
Left join t_settle x1 on a.FSettle=x1.FItemID
Left join t_rp_systemenum x2 on a.FBillType=x2.FItemID
Left join (select v1.FVoucherID,v1.FNumber,v2.Fname FName from t_voucher v1
inner join t_vouchergroup v2 on v1.FGroupid=v2.fgroupid)v on b.FVoucherID=v.FVoucherID
where 1=1 and (c.FID_SRC=0 or c.FClassID_SRC not in (1000000,1000002,1000003,1000004,1000005,1000014,1000021,1000022,1000500,1000501,1000502,1000503,1000520,1000521,1007140,1000016,1000018,1000511,1000510)) and a.FRp=1 and a.FPre in(0,-1)
and b.FType not in(8,9) and a.FCheckStatus<>1
and a.FItemClassID in (1)
and (b.FStatus & 1)=1
and (b.FStatus & 16)=0
and i.FNumber>='01.BTC125'
and i.FNumber<='01.BTC125'
and a.FCurrencyID=1000
go
drop table #TmpBillCheckList



sql 代码如上
问题是当前执行报如题错误,
如果删除一行left join 对查询数据结果没有影响,执行就不会报错了
...全文
972 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2020-04-11
  • 打赏
  • 举报
回复
你按下面查一下, 看实际超过 255 长度的那些数据到底是什么?
--1.
CREATE TABLE #TmpBillCheckList(FExplanation VARCHAR(MAX) DEFAULT(' '))
--2
INSERT INTO #TmpBillCheckList(FExplanation)
SELECT a.FExplanation
FROM   t_rp_newReceiveBill a
       INNER JOIN t_rp_arbillofsh c
            ON  a.FBillID = c.FBillID
       JOIN t_rp_contact b
            ON  a.FBillID = b.FBillID
       LEFT JOIN t_currency cur
            ON  a.FCurrencyID = cur.FCurrencyID
       LEFT JOIN t_item i
            ON  a.FCustomer = i.FItemID
       LEFT JOIN t_item ii
            ON  a.FDepartment = ii.FItemID
       LEFT JOIN t_item iii
            ON  a.FEmployee = iii.FItemID
       LEFT JOIN t_user s
            ON  a.FPreParer = s.FUserID
       LEFT JOIN t_user t
            ON  a.FChecker = t.FUserID
       LEFT JOIN t_settle x1
            ON  a.FSettle = x1.FItemID
       LEFT JOIN t_rp_systemenum x2
            ON  a.FBillType = x2.FItemID
       LEFT JOIN (
                SELECT v1.FVoucherID,
                       v1.FNumber,
                       v2.Fname FName
                FROM   t_voucher v1
                       INNER JOIN t_vouchergroup v2
                            ON  v1.FGroupid = v2.fgroupid
            )v
            ON  b.FVoucherID = v.FVoucherID
WHERE  1 = 1
       AND (
               c.FID_SRC = 0
               OR c.FClassID_SRC NOT IN (1000000, 1000002, 1000003, 1000004, 
                                        1000005, 1000014, 1000021, 1000022, 
                                        1000500, 1000501, 1000502, 1000503, 
                                        1000520, 1000521, 1007140, 1000016, 
                                        1000018, 1000511, 1000510)
           )
       AND a.FRp = 1
       AND a.FPre IN (0, -1)
       AND b.FType NOT IN (8, 9)
       AND a.FCheckStatus <> 1
       AND a.FItemClassID IN (1)
       AND (b.FStatus & 1) = 1
       AND (b.FStatus & 16) = 0
       AND i.FNumber >= '01.BTC125'
       AND i.FNumber <= '01.BTC125'
       AND a.FCurrencyID = 1000 
--3
SELECT len(FExplanation) AS theLen,FExplanation 
FROM #TmpBillCheckList WHERE len(FExplanation)>255
ORDER BY len(FExplanation) DESC
--4
DROP TABLE #TmpBillCheckList

22,301

社区成员

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

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