SQL Server生成查询的模糊匹配字符串
2022-11-12 09:53:46
内容摘要
这篇文章主要为大家详细介绍了SQL Server生成查询的模糊匹配字符串,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!ifexists(select*fromd
文章正文
这篇文章主要为大家详细介绍了SQL Server生成查询的模糊匹配字符串,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[f_Sql]')andxtypein(N'FN',N'IF',N'TF'))dropfunction[dbo].[f_Sql]GOifexists(select*fromdbo.sysobjectswhereid=object_id(N'[序数表]')andOBJECTPROPERTY(id,N'IsUserTable')=1)droptable[序数表]GO--为了效率,所以要一个辅助表配合selecttop1000id=identity(int,1,1)into序数表fromsyscolumnsa,syscolumnsbaltertable序数表addconstraintpk_id_序数表primarykey(id)go/*--根据指定字符串生成查询的模糊匹配字符串条件连接的关键字为and,or可以任意指定括号生成的条件表达式为like模糊匹配--邹建2004.08(引用请保留此信息)--*//*--调用示例--调用示例selectA=dbo.f_Sql('(WeborHTMLorInternet)and(ProgrammerorDeveloper)','content')selectB=dbo.f_Sql('WeborHTMLorInternet','content')selectC=dbo.f_Sql('(WebandHTML)','content')selectD=dbo.f_Sql('Web','content')--*/--示例函数createfunctionf_Sql(@strNvarchar(1000),--要检索的字符串@fdnamesysname--在那个字段中检索)returnsNvarchar(4000)asbegindeclare@rNvarchar(4000)set@r=''select@r=@r+casewhensubstring(@str,id,charindex('',@str+'',id)-id)in('or','and')then''+substring(@str,id,charindex('',@str+'',id)-id)+''whensubstring(@str,id,1)='('then'(['+@fdname+']like''%'+substring(@str,id+1,charindex('',@str+'',id)-id-1)+'%'''whensubstring(@str,charindex('',@str+'',id)-1,1)=')'then'['+@fdname+']like''%'+substring(@str,id,charindex('',@str+'',id)-id-1)+'%'')'else'['+@fdname+']like''%'+substring(@str,id,charindex('',@str+'',id)-id)+'%'''endfrom序数表whereid<=len(@str)andcharindex('',''+@str,id)-id=0return(@r)endgo注:关于SQL Server生成查询的模糊匹配字符串的内容就先介绍到这里,更多相关文章的可以留意
代码注释