DECLARE @e NVARCHAR(MAX)
CREATE TABLE #a(moblies int)
SET @e=''
SELECT @e=@e+dbo.DP_Mobiles.UserName+','
FROM #a,dbo.DP_Mobiles
WHERE #a.moblies=dbo.DP_Mobiles.MobileId
IF LEN(@e)=1
SET @e=':无'
ELSE
SET @e=SUBSTRING(@e,1,LEN(@e)-1)
PRINT @eDROP TABLE #a
代码是这样的,我想试试当#a是空的时候,是不是输出':无'这个东东啊?但弹出提示消息 537,级别 16,状态 5,第 10 行
传递给 LEFT 或 SUBSTRING 函数的长度参数无效。还有几个小问题:LEN(@e)=1语句中,如果#a为空,那@e赋值就是‘,’,逗号算不算一个字符啊?SUBSTRING的具体用法
而且这段语句我理解的有点模糊,大神们能跟我说说么?sqllenSUBSTRING
CREATE TABLE #a(moblies int)
SET @e=''
SELECT @e=@e+dbo.DP_Mobiles.UserName+','
FROM #a,dbo.DP_Mobiles
WHERE #a.moblies=dbo.DP_Mobiles.MobileId
IF LEN(@e)=1
SET @e=':无'
ELSE
SET @e=SUBSTRING(@e,1,LEN(@e)-1)
PRINT @eDROP TABLE #a
代码是这样的,我想试试当#a是空的时候,是不是输出':无'这个东东啊?但弹出提示消息 537,级别 16,状态 5,第 10 行
传递给 LEFT 或 SUBSTRING 函数的长度参数无效。还有几个小问题:LEN(@e)=1语句中,如果#a为空,那@e赋值就是‘,’,逗号算不算一个字符啊?SUBSTRING的具体用法
而且这段语句我理解的有点模糊,大神们能跟我说说么?sqllenSUBSTRING
=>
IF LEN(@e)<1
=>
IF LEN(@e)<1
意思是select查询不到数据,@e没有进行赋值操作,你上一步执行了set @e=''
所以len(@e)=0 ,这样进入了你的else判断
@e=SUBSTRING(@e,1,LEN(@e)-1),substring函数当你给定的长度LEN(@e)-1=-1这样就报错了
因为后面拼接了个逗号嘛,然后下面的substring就将最后一个逗号截断
最终输出的结果就是a,b,c了