如以下这句:@str nvarchar(1000)
set @str='select TopicID from ttt where ID='+@ID+' ORDER BY lastposttime desc'这样就不行,一定改成
ID='+ CONVERT(nvarchar,@ID) +'但ID我之前已经声明为 int 了。 
难道每次set @str =时 都要重新转换吗?那样不是太麻烦了?

解决方案 »

  1.   

    declare @str nvarchar(1000)
    set @str='select TopicID from ttt where ID='''+ltrim(@ID)+''' ORDER BY lastposttime desc'

    declare @str nvarchar(1000)
    set @str='select TopicID from ttt where ID='''+rtrim(@ID)+''' ORDER BY lastposttime desc'
      

  2.   

    这个当然要转换了,字符串不能和int类型数据相加,,,
      

  3.   

    declare @str nvarchar(1000)  
    set @str='select TopicID from ttt where ID='+cast(@ID as varchar)+' ORDER BY lastposttime desc'  set @str='select TopicID from ttt where ID='+convert(varchar,@ID)+' ORDER BY lastposttime desc'  这两种.
      

  4.   

    declare @str nvarchar(1000) 
    set @str='select TopicID from ttt where ID='+ltrim(@ID)+' ORDER BY lastposttime desc' 
      

  5.   

    能不能开头就定义:
    @id_str nvarchar(100)
    @id_str=convert(varchar,@ID)然后:
    set @str='select TopicID from ttt where ID='+@id_str+' ORDER BY lastposttime desc'ltrim(@ID) 和 convert(varchar,@ID) 有什么区别啊?