无效的长度参数传递给左或子字符串函数

问题描述:

DECLARE @TotalImagesCount int 
      IF(@InfoTypeiD=9) 
       SET @TotalImagesCount=(SELECT ImagesCount/3 FROM Information(NOLOCK) WHERE [email protected]) 
      ELSE 
       SET @TotalImagesCount=(SELECT ImagesCount FROM Information(NOLOCK) WHERE [email protected]); 

     SET @PageNumber = @PageNumber - 1 
     SET @RowStart = @PageSize * @PageNumber + 1; 
     SET @RowEnd = @RowStart + @PageSize - 1; 
     BEGIN 
      WITH RESULT AS 
      (
       SELECT filepath,MediaFileId,SUBSTRING(filepath,0,LEN(filepath)-3)+'_800.jpg' img800,[Description], 
       SUBSTRING(filepath,0,LEN(filepath)-3)+'_1024.jpg'img1024 ,ROW_NUMBER() OVER (ORDER BY MediaFileId DESC) AS RowNumber 
       --CASE WHEN @InfoTypeID=9 THEN (SELECT COUNT(*)/3 FROM mediafile(NOLOCK) where [email protected]) 
       --ELSE (SELECT COUNT(*) FROM mediafile(NOLOCK) where [email protected]) 
       --END AS TotalImages 
       FROM MediaFile(NOLOCK) WHERE [email protected] and 
       filepath NOT LIKE '%800.%' and filepath NOT LIKE '%1024.%' 
      ) 
      SELECT filepath,MediaFileId,img800,img1024,RowNumber,@TotalImagesCount AS TotalImages,[Description] AS ImageDescription, 
      (SELECT COUNT(*) FROM RESULT) TotalRecords FROM RESULT 
      WHERE RowNumber >= @RowStart AND RowNumber <= @RowEnd ORDER BY MediaFileID DESC 
+2

这是SQL,而不是ASP.Net。你的问题是什么? – Prutswonder 2011-03-31 07:13:46

+0

为了更好地说明您的实际问题,请将此标记为管理员注意。 – 2011-04-01 09:24:49

也许这些行:

SELECT * FROM MediaFile WHERE LEN(filepath) <= 3 

另外,你确定你想在你的子串使用0? - 见http://msdn.microsoft.com/en-us/library/ms187748.aspx,特别是评论。