字符串 a='0100|0200|0311|0315|0318|0420|'
字符串 b='0111|0112|0316|0304|0522|0503|'where b like a  print '888'a中的0100代表所有的,即01[0-9][0-9]我的本方法是用替换“|”来实现拼sql语句,但是效率很低,请各位高手给个高效的方法!
 FUNCTION  [dbo].[String_Rather2] --判断类
(
@PanString varchar(2000),--要判断的列
@YuanString varchar(2000) --要对比的列
)
RETURNS varchar(max)
AS
BEGIN
declare @sql varchar(max)
set @sql =char(32)+@YuanString+char(32)+'like'+char(32)+char(39)+char(37)+replace(@PanString,'|',char(37)+char(39)+char(32)+'or'+char(32)+@YuanString+char(32)+'like'+char(32)+char(39)+char(37))+'m><n'+char(37)+char(39)
RETURN @sql
END
@a=a,@b=b --调用上面的方法函数set @a = replace(@a ,'000','0[0-9][0-9]')
set @a = replace(@a ,'00','[0-9][0-9]')
set @where = @where + ' and ('+dbo.String_Rather2(@a, @b)+')'再次请大家赐教!!在线等……

解决方案 »

  1.   

    http://blog.csdn.net/sgtzzc/archive/2009/10/15/4676777.aspx
      

  2.   

    按“|”分割所有的那些四位数
    比如a='0100|0200|...'  b='0111|6000|...'
    b中的 0111 属于a中的 0100 就打印 8888狂哭,表达能力太差,对不起大家了……
      

  3.   

    主要实现目的,数据库表中有一字段是喜欢的地方,即a存放5个地方的id,0100代表市,0111代表01市的地方,现在要选择5个地方或市,从表中查出喜欢这些地方的人(如果选0100,就要查出所有喜欢01市的所有地方的人),不知大家有没有好的思路……
      

  4.   

    数据库city字段:0111|0112|0316|0304|0522|0503|
    我要查询复选框:n个,选择5个,value用“|”隔开,即'0100|0200|0311|0315|0318|0420|(其中0100|0200是大类,类似的有好多,0100包括0101-0199)
    表中city字段符合条件的行列出来!
      

  5.   

    建议用外部程序,诸如SPLIT之数的函数实现,如果楼主硬要这样搞的话,那也是霸王硬上弓,赶鸭上架,跟猪似地……