请教sql高手,关于sqlserver的一个字段多个关键字模糊查询的问题。

假如表T中的C1、C2、C3是字符串是要搜索的,已经用带3个参数的存储过程实现。
但是现在需求变了,C3有若干不定数量的关键字,查询的是包含这些关键字并且是and的关系的记录。
问题是如果我还想用存储过程的形式,如何传数组参数过去?如果不用,而用C#组合查询字符串,性能又会改变多少?
最新回答
薰衣草香

2024-10-17 06:47:23

穿带格式的字符串,然后在存储过程里面分解
比如 ‘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
追问
能帮忙写完整么,至少还要while语句啊,也不是很会。
追答
稍等,先吃完饭
你加我QQ吧

396221776
追问
加了,不见你反应啊?