数据表(goodat)结构是username      arealist
'aaa'         '210,211,343'
'bbb'         '210,454,552'请问我怎样通过传递一个参数@array 从表中取出arealist字段中所有包括210的值的列表啊?
我目前的存储过程是这样但是不得行
CREATE PROCEDURE ASK_Good_List_u
@array nvarchar(255)
AS
BEGIN
SET NOCOUNT ON
DECLARE @nsql nvarchar(4000)
set @nsql='SELECT username FROM goodat WHERE '+ @array +' IN (Arealist)'
EXEC sp_executesql @nsql
ENDSELECT 
GO

解决方案 »

  1.   

    set @nsql='SELECT username FROM goodat WHERE Arealist like %'+ @array +'%'
      

  2.   

    SELECT username FROM goodat WHERE charindex(','+@array+',',','+Arealist+',')>0
      

  3.   

    给个提示吧,看下面的例子应该知道楼主的错误在哪里的吧
    if '201' in ('201','203','204')
    print 'yes'
    else
    print 'no'if 201 in (201,203,204)
    print 'yes'
    else
    print 'no'
      

  4.   

    谢谢大家及时帮忙,我觉得SassyBoy(dp->tdd->xp)更合适一些,jiashijie() 查询结果可能不准确
      

  5.   

    if (select object_id('tempdb..#goodat')) is not null drop table #goodat
    select * into #goodat
    from
    (
    select username='aaa',arealist='210,211,343'
    union select 'bbb','210,454,552'
    union select 'ccc','123,454210,552'
    union select 'ddd','123,454,552'
    )adeclare @array nvarchar(255)
    set @array='210'DECLARE @nsql nvarchar(4000)
    set @nsql='SELECT username FROM #goodat WHERE charindex('','+@array+','','',''+Arealist+'','')>0'
    EXEC sp_executesql @nsql