字符串 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)+')'再次请大家赐教!!在线等……
字符串 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)+')'再次请大家赐教!!在线等……
比如a='0100|0200|...' b='0111|6000|...'
b中的 0111 属于a中的 0100 就打印 8888狂哭,表达能力太差,对不起大家了……
我要查询复选框:n个,选择5个,value用“|”隔开,即'0100|0200|0311|0315|0318|0420|(其中0100|0200是大类,类似的有好多,0100包括0101-0199)
表中city字段符合条件的行列出来!