请教一个问题,希望得到大家帮助.
表结构: ID (主键) 日期 班次 人员
其中人员为用","分隔的字符串,字符串中数据项的位置和数量不确定.如何在SQL中自定义一个函数,参数为:日期/班次/待查找的字符串.用游标或其他方法对sql检索出来的指定日期,班次的一组字符串进行匹配查找,如果有匹配的记录则返回ID,否则返回0.

解决方案 »

  1.   

    --待查找的字符串  是什么样的啊!create function StrFind(@dt datetime,@classnum varchar(1000),@findstr varchar(1000))
    return int
    asdeclare @id int
    set @findstr = ','+@findstr+','select @id = id 
    from tablename 
    where 日期 = @dt and 班次 = @classnum and charindex(@findstr,','+人员+',')>0if @id > 0
    return @id
    else
    return 0
      

  2.   

    待查找的字符串是这样的'a200501,a200502,a200503'
    数据库中检索出来的字符串可能是这样的
    01-2006-12-1-8-'a200501,a200501,a200503'
    02-2006-12-1-8-'a200501,a200501,a200503,a200504'
    03-2006-12-1-8-'a200501,a200501,a200503,a200506'
    04-2006-12-1-8-'a200501,a200501,a200503,a200506,a200576'我要的结果是 1这条记录匹配,返回的结果'01',否则返回'0'.
      

  3.   

    不好意思上面的回复有点问题,这个正确
    待查找的字符串是这样的'a200502,a200501,a200503'  
    数据库中检索出来的字符串可能是这样的  
    01-2006-12-1-8-'a200501,a200501,a200503'  
    02-2006-12-1-8-'a200501,a200501,a200503,a200504'  
    03-2006-12-1-8-'a200501,a200501,a200503,a200506'  
    04-2006-12-1-8-'a200501,a200501,a200503,a200506,a200576'  
     
    我要的结果是  1这条记录匹配,返回的结果'01',否则返回'0'.  
      

  4.   

    不好意思上面的回复有点问题,这个正确  
    待查找的字符串是这样的'a200502,a200501,a200503'      
    数据库中检索出来的字符串可能是这样的      
    01-2006-12-1-8-'a200501,a200502,a200503'      
    02-2006-12-1-8-'a200501,a200501,a200503,a200504'      
    03-2006-12-1-8-'a200501,a200501,a200503,a200506'      
    04-2006-12-1-8-'a200501,a200501,a200503,a200506,a200576'      
       
    我要的结果是    1这条记录匹配,返回的结果'01',否则返回'0'.