SELECT CategoryID, CategoryName, accCategoryDepth, accCategoryQuestionNum
FROM tbCategory
WHERE (CategoryID IN (0 +
          (SELECT accCategoryPath
         FROM tbCategory AS tbCategory_1
         WHERE (CategoryID = @CategoryID)) + @CategoryID))@CategoryID=11;
accCategoryPath 获得的值为 ,5,7, 我想组成 0,5,7,11 然后或地这四个 ID 的 CategoryID, CategoryName, accCategoryDepth, accCategoryQuestionNum 列。错误提示: 在将 nvarchar 值 ',5,7,' 转换成数据类型 int 时失败。我应该怎么改?

解决方案 »

  1.   

    SELECT CategoryID, CategoryName, accCategoryDepth, accCategoryQuestionNum
    FROM tbCategory
    WHERE (CategoryID in (0,@CategoryID)) or 
          (charindex(','+rtrim(CategoryID)+',',','+accCategoryPath+',')
      

  2.   

    exec('SELECT CategoryID, CategoryName, accCategoryDepth, accCategoryQuestionNum
    FROM tbCategory
    WHERE (CategoryID IN (0' +
              SELECT accCategoryPath
             FROM tbCategory 
             WHERE CategoryID = @CategoryID + cast(@CategoryID as varchar(100)))
      

  3.   

    rtrim, cast都写了,还有一个convert,^_^ ltrim
      

  4.   

    WangZWang(先来) ( ) 信誉:100  
    无法识别 charindex 阿~ 有没有别的办法?chuifengde() ( ) 信誉:100 
    我这个不是存储过程,只是程序中的语句阿...各位大虾帮忙啊~~
      

  5.   

    ASP.NET(C#) 写, SQL Server 2005 数据库需要检索导航,希望能使用一条语句获得结果~
      

  6.   

    就是想将 检索出来的字符串作为 Where in 的值在次查询..
      

  7.   

    解决了~~
    "
    DECLARE @SQLString nvarchar(4000);
    select @SQLString='select CategoryID, CategoryName, accCategoryDepth, accCategoryQuestionNum from tbCategory where CategoryID in ('
    + SUBSTRING([accCategoryPath],2,LEN([accCategoryPath])-2)+ ') or CategoryID=@CategoryId' from tbCategory where CategoryID=@CategoryId;
    PRINT @SQLString EXECUTE sp_executesql @SQLString"结了~~