请教sql高手,关于sqlserver的一个字段多个关键字模糊查询的问题。
假如表T中的C1、C2、C3是字符串是要搜索的,已经用带3个参数的存储过程实现。但是现在需求变了,C3有若干不定数量的关键字,查询的是包含这些关键字并且是and的关系的记...
假如表T中的C1、C2、C3是字符串是要搜索的,已经用带3个参数的存储过程实现。
但是现在需求变了,C3有若干不定数量的关键字,查询的是包含这些关键字并且是and的关系的记录。
问题是如果我还想用存储过程的形式,如何传数组参数过去?如果不用,而用C#组合查询字符串,性能又会改变多少? 展开
但是现在需求变了,C3有若干不定数量的关键字,查询的是包含这些关键字并且是and的关系的记录。
问题是如果我还想用存储过程的形式,如何传数组参数过去?如果不用,而用C#组合查询字符串,性能又会改变多少? 展开
1个回答
展开全部
穿带格式的字符串,然后在存储过程里面分解
比如 ‘1334||3695||1112’
在存储过程里面分解成
(c like '%1334%' and c like '%3695%' and C like ‘%1112%’)
比如 ‘1334||3695||1112’
在存储过程里面分解成
(c like '%1334%' and c like '%3695%' and C like ‘%1112%’)
更多追问追答
追问
如何分解,请给语句?还有你这样得到一个字符串,如何用在select语句里面?
追答
分解啊,分解后,组合sql语句
比如你的存储过程为 myProcedure (stra,strb,strc)
stra,strb 不需要做处理,直接 C1 like '%stra%' and C2 like '%strb%'
strc就要处理了,把几个值提取出来
组合成我上面说的那样式的
当然,这样做就要定义一个字符串类型的变量来存放了
@sql varchar(max)
set @sql='select * from table where C1 like ''%'+stra+'%'' and C2 like '''%'+strb+'%'' and C3.......'
你自己照格式处理吧
最后exec @sql
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询