日期:2014-05-17  浏览次数:20439 次

一个小小的提问
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 @e

DROP TABLE #a

代码是这样的,我想试试当#a是空的时候,是不是输出':无'这个东东啊?但弹出提示消息 537,级别 16,状态 5,第 10 行
传递给 LEFT 或 SUBSTRING 函数的长度参数无效。

还有几个小问题:LEN(@e)=1语句中,如果#a为空,那@e赋值就是‘,’,逗号算不算一个字符啊?SUBSTRING的具体用法
而且这段语句我理解的有点模糊,大神们能跟我说说么?
sql len SUBSTRING

------解决方案--------------------
IF LEN(@e)=1
=>
IF LEN(@e)<1
------解决方案--------------------
查询赋值的时候,如果查询不到数据,就相当于赋值语句没有执行,@e的值没有变