表tb
sn       errcode 
101 1,5,3
102 5,3
103 13,16
104 3,4
105 8
106 2,1,3
107 4,3,7
108 13,16,6
109 3,4,6
110 8,3,2,1,5想把这条语句写成存储过程,就是查找errcode字段中含有  某一个  的记录,比如3
select * from tb where errcode LIKE '%3' or errcode LIKE '3%' or errcode LIKE '%,3%'
---------------------------------------------------------
CREATE PROCEDURE errcodeQuery 
@errcode char(5)
AS
?????该怎么写????GO
----------------------------------------------------------

解决方案 »

  1.   

    CREATE PROCEDURE errcodeQuery 
    @errcode varchar(5) 
    AS 
        select * from tb
        where errcode like '%' + @errcode + '%'
      

  2.   

    select 
        * 
    from 
        tb 
    where 
        errcode 
    like  
         '%' + @errcode + '%'
      

  3.   

    CREATE PROCEDURE errcodeQuery
    @errcode char(5)
    AS
     
    select * from tb where charindex(','+@errcode+',',','+errcode+',')>0  
      

  4.   

    这不用存储过程吧
    直接SQL语句就行了SELECT * FROM TB WHERE CHARINDEX(','+@errcode+',',','+errcode+',')>0
      

  5.   


    CREATE PROCEDURE errcodeQuery 
    @errcode varchar(5) 
    AS 
        select * from tb 
        where errcode like '%' + @errcode + '%'
    go
      

  6.   

     AS 
    SELECT sn ,errcode 
            from 表tb 
            WHERE errcode like '%@errcode%'
      

  7.   


    CREATE PROCEDURE errcodeQuery 
    @errcode char(5) 
    AS select * from tb where charindex(','+@errcode+',',','+errcode+',')>0  
      

  8.   

    这么做不行,比如下面,选择有3的记录
    select * from tb where errcode LIKE '%3%'
    但筛选出来的结果有
    103 13,16
    不符合要求
      

  9.   


    --try:CREATE PROCEDURE errcodeQuery 
    @errcode varchar(5) 
    AS 
        select * from tb 
        where charindex(','+@errcode+',',','+errcode+',')>0
      

  10.   


    用charindex方法可以做,如下
    select * from tb where charindex(','+'3'+',',','+errcode+',')>0  101 1,5,3
    102 5,3
    104 3,4
    106 2,1,3
    107 4,3,7
    109 3,4,6
    110 8,3,2,1,5
    但是作为存储过程,就显示不出来了,不知是何原因
    exec errcodeQuery 3
    后一条记录也显示不出来
    是何原因??
      

  11.   

    在存储过程里有没有限制记录的条数?
    如:
    set rowcount 5
      

  12.   


    没有啊存储过程里就一条select语句
    CREATE PROCEDURE errcodeQuery 
    @errcode varchar(5) 
    AS 
        select * from tb 
        where charindex(','+@errcode+',',','+errcode+',')>0
    --我觉得是不是@errcode作为参数 会有什么问题?
      

  13.   

    CREATE PROCEDURE errcodeQuery 
    @errcode varchar(5) 
    AS 
        select * from (select sn,','+errcode+',' errcode  from tb ) a
        where errcode like '%,' + @errcode + ',%'
      

  14.   

    恩 用charindex好,但是存储过程就是实现不了。又写了一个,这样也是不行,到底哪出问题了,各位帮帮忙吧CREATE PROCEDURE errcodeQuery 
    @errcode char(5)
    AS
    exec ('select * from tb where charindex('','''+''''+@errcode+''''+''','','',''+errcode+'','')>0')
    GO
      

  15.   


    CREATE PROCEDURE errcodeQuery 
    @errcode varchar(50) 
    AS 
        select * from tb 
        where charindex(','+@errcode+',',','+errcode+',')>0不是有人在你写好了吗
      

  16.   


    运行
    exec errcodeQuery 3
    一条记录也显示不出来 之前我不是说了么
      

  17.   

    你改成VARCHAR不就好了,你用的是CHAR(5)当然不行
      

  18.   


    CREATE PROCEDURE errcodeQuery 
    @errcode varchar(5) 
    AS 
        select * from (select sn,','+errcode+',' errcode  from tb ) a
        where errcode like '%,' + @errcode + ',%'
      

  19.   

    select * from tb where ','+errcode+',' like '%,3,%'
      

  20.   


    exec ('select * from tb where charindex('',''+'''+ @errcode + '''+'','','',''+errcode+'','')>0')  
    exec ('select * from tb where charindex('','''+ '+'''+ @errcode + '''+' +''','','',''+errcode+'','')>0')  
    两个试过了 都不行,可能还是格式不行,高手再看看
      

  21.   


    --方法一
    CREATE PROCEDURE my_proc1 @errcode varchar(10)
    AS
      select * from tb where charindex(',' + @errcode + ',' , ',' + sn + ',') > 0 
    GO
    --方法二
    CREATE PROCEDURE my_proc2 @errcode varchar(10)
    AS
      select * from tb where ',' + sn + ',' like '%,' + @errcode + ',%' 
    GO
      

  22.   

    DECLARE @errcode VARCHAR(10)别用CHAR
    DECLARE @errcode VARCHAR(10)
    SET @errcode='3'PRINT ('select * from tb where charindex('',''+'''+ @errcode + '''+'','','',''+errcode+'','')>0')  /*
    select * from tb where charindex(','+'3'+',',','+errcode+',')>0
    为什么不行了????