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

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

穿带格式的字符串,然后在存储过程里面分解
比如 ‘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

追问

加了,不见你反应啊?

温馨提示:内容为网友见解,仅供参考
无其他回答

sql高手进!关于在sqlserver里实现一个表多字段distinct查询的问题。
SELECT FROM TDist W WHERE ID=(SELECT MIN(ID) FROM TDist N WHERE N.a=W.a AND N.b=W.b)

sql语句模糊查询问题.单列多个条件
GO INSERT [dbo].[Table_1] ([DATA]) VALUES (N'QQ 2009')INSERT [dbo].[Table_1] ([DATA]) VALUES (N'QQ2009')INSERT [dbo].[Table_1] ([DATA]) VALUES (N'qq123')INSERT [dbo].[Table_1] ([DATA]) VALUES (N'200912')INSERT [dbo].[Table_1] ([DATA]) VALUES (N'123...

sql语句中如何一个字段对查询出的多个值添加判断条件
sql server 的话,可以用一种很 诡异的方法:select distinct ','+ sale_item from sale_report for xml path('')楼主可以测试一下,最后用一个 for xml path('')就好。我上面的 sql 执行结果为:,c,a,b

sqlserver数据库中怎么查询某个字段中含有某些字?
表名为zwj,字段为sp,查询sp字段中含有'所有'的语句为select * from zwj where sp like '%所有%' --表名为zwj,字段为sp,查询sp字段中含有'所'或'有'的语句为select * from zwj where sp like '%所%' or sp like '%有%'二、含有医院编号字段的所有表 select a.[name] 表名 from ...

sqlserver查询一对多的关系、合并多条记录的某字段值到一个字段
现有如下两个表格construct和attachment,通过construct.id = attachment.link_id进行关联。现需要从attachment表提取每一个construct对应的多个file_path值,并与construct合并。通过stuff()、 for xml path() 进行拼接,直接上sql语句:查询结果为:

sqlserver中,一个表里面有多个字段,怎样根据两个不能重复的字段取出全部...
1.存在两条完全相同的纪录 这是最简单的一种情况,用关键字distinct就可以去掉 example: select distinct * from table(表名) where (条件)2.存在部分字段相同的纪录(有主键id即唯一键)如果是这种情况的话用distinct是过滤不了的,这就要用到主键id的唯一性特点及group by分组 example: select * ...

求SQL高手---将一条记录中的某个字段拆分,多行显示
4行变成1行?如果用SQLServer的话,可以用一种很诡异的方法:SELECTDISTINCT','+SALE_ITEMFROMSALE_REPORTFORXMLPATH('')楼主可以测试一下,最后用一个FORXMLPATH('')就好。我上面的SQL执行结果为:,C,A,B

关于SQL语句wehre条件的一个问题请教
select * from table where left(IP,len(IP)-charindex('.',reverse(IP) ) ) = UserIP 使用函数:Reverse 返回字符表达式的反转。Charindex 返回字符串中指定表达式的起始位置。Len 返回给定字符串表达式的字符(而不是字节)个数,其中不包含尾随空格。Left 返回从字符串左边开始指定个数的字符。

sqlserver 循环问题请教,高手帮忙
在严格的关系模型中,department和project两个表的联系需要通过外部关键字(外键)关系才能实现。 二、举例说明嵌套表的使用: 假设有一个关于动物饲养员的表,希望其中具有他们饲养的动物的信息。用一个嵌套表,就可以在同一个表中存储饲养员和其饲养的全部动物的信息。 1、创建类型animal_ty:此类...

sqlserver 中 字段 内容为1,2,3,4,5,6,7... 如何查询出来以‘,’分割的...
假设你的表只有一个字段。那么如下 select a from table where a like '%,%''%'在SQL查询语句字符寸里面相当于Windows路径语句中的通配符'*' 。

相似回答