这样写,就可以查出结果declare @ProjectName nchar(20)
set @ProjectName='新'
select * from Projects where ProjectName like '%新%'
而这样写,就不可以,
declare @ProjectName nchar(20)
set @ProjectName='新'
select * from Projects where ProjectName like '%'+@ProjectName+'%'
网上说,就是这样写,但我却查不出结果,为什么?

解决方案 »

  1.   

    declare @ProjectName nchar(20)
    declare @exec varchar(8000)
    select  @ProjectName='新',@exec=''
    set @exec='select * from Projects where ProjectName like ''%'+rtrim(@ProjectName)+'%'''
     
    exec (@exec)
      

  2.   

    select * from Projects where ProjectName like N'%'+@ProjectName+N'%'
      

  3.   

    應該是
    declare @ProjectName nvarchar(20)
    否則就應該
    select * from Projects where ProjectName like '%'+rtrim(@ProjectName) +'%'
      

  4.   

    區別
    declare @ProjectName nchar(20)
    set @ProjectName='新'
    SELECT LEN(@ProjectName+'a')-1
    /*
    20
    */
    go
    declare @ProjectName2 nvarchar(20)
    set @ProjectName2='新'
    SELECT LEN(@ProjectName2+'a')-1
    /*
    1
    */
      

  5.   

    看来是空格在作怪了。
    #5楼shinesky的方法不错。
    declare  @username1 nvarchar (10)
    declare  @username2 nchar (10)select @username1=N'新' 
    select @username2=N'新' select * from user
    where  empname like '%'+@username1+'%'
    select * from user
    where  empname like '%'+rtrim(@username2)+'%'
      

  6.   


    declare @ProjectName nchar(20)
    set @ProjectName='新'
    select * from Projects where ProjectName like '%'+rtrim(@ProjectName)+'%'