高手帮我看看 为什么会报这个错误

jaydom 2010-06-01 03:49:19

create table ta ( num varchar(10) )
insert into ta
select 1 union all
select 2 union all
select 3 union all
select 4 union all
select 5 union all
select 10 union all
select 110 union all
select 101

create table tb (编号 varchar(10),公交路线 varchar(100))
insert into tb
select '10001', '1,101' union all
select '10002', '10,110'


;with t
as
(
select a.编号, cast(SUBSTRING(a.公交路线,number,CHARINDEX(',',a.公交路线+',',number)-b.number) as varchar(100)) col
from tb a join master..spt_values b on b.type='p' and CHARINDEX(',',','+a.公交路线,number)=number
)
select *
from tb join t on t.编号=tb.编号
where t.col='10'

消息 537,级别 16,状态 2,第 1 行
传递给 LEFT 或 SUBSTRING 函数的长度参数无效。

...全文
41 点赞 收藏 7
写回复
7 条回复
jaydom 2010年06月01日
谢谢各位sf ,问题解决了 结贴
回复 点赞
--小F-- 2010年06月01日
传递给 LEFT 或 SUBSTRING 函数的长度参数无效 检查下SUBSTRING函数中的长度是不是数值
回复 点赞
无心雨云 2010年06月01日
没注意,连的是系统表
回复 点赞
无心雨云 2010年06月01日
number is null
未处理吧
回复 点赞
永生天地 2010年06月01日
;with t
as
(
select a.编号, cast(SUBSTRING(a.公交路线,number,CHARINDEX(',',a.公交路线+',',number)-b.number) as varchar(100)) col
from tb a join master..spt_values b on b.type='p' and CHARINDEX(',',','+a.公交路线,number)=number and b.number between 1 and len(a.公交路线)
)
select *
from tb join t on t.编号=tb.编号
where t.col='10'
回复 点赞
无心雨云 2010年06月01日
没看到有[number]这个字段啊
回复 点赞
jaydom 2010年06月01日
顶一下 怎么没人来啊
回复 点赞
发动态
发帖子
疑难问题
创建于2007-09-28

9304

社区成员

12.1w+

社区内容

MS-SQL Server 疑难问题
社区公告
暂无公告