select
FRealAmt=b.FTaxSubmitAmt,
FRealAmtFor=b.FTaxSubmitAmtFor,
FRealDeprID = a.FDeptID,
FRealEmpID= a.FProposerID ,
FRealExpID= b.FExpID,
FRealItemClassID= b.FItemClassID,
FRealItemID=b.FItemID,
FProjectID = 1000,
a.FCurrencyID as FCurrencyID,
c.Fname as department,
d.Fname as employee,
REVERSE(LEFT(REVERSE(e.FFullName),CHARINDEX('_',Reverse(e.FFullName))-1)) as ItemName,
e.Fname as expensive,
FCheckDate,
FDate,
a.FCheckStatus as FCheckStatus,
b.Fnote as fnote,
e.FitemClassID as FitemClassID,
e.Fnumber as Fnumber
from t_BM_ExpReimbursement a
Inner Join t_BM_ExpReimbursementEntry b On a.FID=b.FID
Inner Join t_Currency cur on cur.FCurrencyID =a.FCurrencyID
Inner Join t_item c on c.FItemID=a.FDeptID
Inner Join t_item d on d.FItemID=a.FProposerID
Inner Join t_item e on e.FItemID=b.FExpID执行时提示 传递到 SUBSTRING 函数的长度参数无效。
问题出现在 REVERSE(LEFT(REVERSE(e.FFullName),CHARINDEX('_',Reverse(e.FFullName))-1)) as ItemName
t_item 表里有个Flevel 字段。用来记录层级,最大级别为3注示掉 REVERSE(LEFT(REVERSE(e.FFullName),CHARINDEX('_',Reverse(e.FFullName))-1)) as ItemName 后 改为
Select .....
Inner Join t_item e on e.FItemID=b.FExpID and e.Flevel < 2 执行没有数据改为
Select .....
Inner Join t_item e on e.FItemID=b.FExpID and CHARINDEX('_',Reverse(e.FFullName))=0 执行没有数据把刚才注示掉的 REVERSE(LEFT(REVERSE(e.FFullName),CHARINDEX('_',Reverse(e.FFullName))-1)) as ItemName 恢复改为
Select .....
Inner Join t_item e on e.FItemID=b.FExpID and e.Flevel > 1 可以正常执行不清楚为什么没有 and e.Flevel > 1 就报错
解决方案 »
- 字符串转换为时间
- 网络病毒问题?
- 2008附加2000数据库失败,ASP.NET开发实战宝典上的物流系统源代码,无法附加
- SQLSERVER打开出现找不到存储过程'master.dbo.xp_MSplatform'
- reporting service 报表订阅/分发问题
- 查询时数值型返回中文意思?
- sqlserver 2005恢复数据的问题
- 为什么Firebird 在IBExpert中不能执行insert into where not exists这样的语句
- 数据列不确定,如何插入?
- 关于Access中的备注字段用流读写的问题,再次请教"过江项羽",也欢迎其他高手解答
- 3.89-3.98=4.44089209850063E-16
- 通过一个子查询得到学生的SNo,SName,平均成绩,将这个结果插入到表score,这个sql语句怎么写??
Inner Join t_item e on e.FItemID=b.FExpID and CHARINDEX('_',Reverse(e.FFullName))=1有没有数据。
e.FFullName 记录的是这样的格式的
****_****_*** 或 ****_***
用的是REVERSE(LEFT(REVERSE(e.FFullName),CHARINDEX('_',Reverse(e.FFullName))-1))ms的bug
如果FFullName中没有'_',CHARINDEX('_',Reverse(e.FFullName))=0
就变成了REVERSE(LEFT(REVERSE(e.FFullName),-1));报错的话貌似应该是:
Invalid length parameter passed to the left function.