写一个存储过程,实现在表上的模糊搜索
GetList(
@TableName VarChar(50), --表名
@Value VarChar(1000), --要查找的值
)
说明,要在该表的所有字符串的列上进行比较查找的满足要求的值,如果值中包含有空格,则该值代表两个部分,要查找的结果中只需满足其中一个部分就可以了,如“福建师范大学 张三”则只要列中含有“福建师范大学”或者“张三”就满足要求。
GetList(
@TableName VarChar(50), --表名
@Value VarChar(1000), --要查找的值
)
说明,要在该表的所有字符串的列上进行比较查找的满足要求的值,如果值中包含有空格,则该值代表两个部分,要查找的结果中只需满足其中一个部分就可以了,如“福建师范大学 张三”则只要列中含有“福建师范大学”或者“张三”就满足要求。
@TableName VarChar(50), --表名
@Value VarChar(1000), --要查找的值
)
as
set nocount on
declare @s varchar(8000)
set @s='select * from '+@TableName+' where charindex(col,'+@Value+')>0'
exec(@s)
go
@TableName VarChar(50), --表名
@Value VarChar(1000), --要查找的值
as
set nocount on
declare @s varchar(8000)
set @s='select * from '+@TableName+' where charindex(col,'+@Value+')>0'
exec(@s)
go补充关键字.
@TableName VarChar(50), --表名
@Value VarChar(1000) --要查找的值
as
set nocount on
declare @s varchar(8000)
set @s='select * from '+@TableName+' where charindex(name,'''+@Value+''')>0 or charindex('''+@Value+''',name)>0'
exec(@s)
go
-->调用:
exec GetList 'sysobjects','sysnsobjs abcdk'试试这样是否可行.
@TableName VarChar(50), --表名
@Value VarChar(1000), --要查找的值
)
as
set nocount on
declare @str varchar(8000)
set @str='select * from '+@TableName+' where charindex('+ltrim(@value)+',列)>0'
exec(@str)
set nocount off
go
insert into ta select '福建师范大学'
insert into ta select '福建师范大学 张三'
insert into ta select '表名'select * from ta
go
create proc GetList
@TableName VarChar(50), --表名
@colname varchar(30), --colname
@Value VarChar(1000) --要查找的值
as
set nocount on
declare @s varchar(8000)
set @s = 'select distinct d.* from
(SELECT B.VALUE
FROM(
SELECT
[value] = CONVERT(XML,''<ROOT><V>' + REPLACE(@Value, ' ', '</V><V>') + '</V></ROOT>'')
)A
OUTER APPLY(
SELECT value = N.v.value(''.'', ''varchar(100)'')
FROM A.[value].nodes(''/ROOT/V'') N(v)
)B
) c
left join '+@TableName+' d on charindex( c.[VALUE],d.'+@colname+') > 0'
exec (@s)
go
exec GetList 'ta','col','福建师范大学 张三'drop proc GetList
drop table ta
go
/*
id col
----------- --------------
1 福建师范大学
2 福建师范大学 张三
*/
我的意思是要是我执行 exec '福建师范大学 张三'
它回自动查询出含有福建师范大学和含有张三的列!
是一个模糊查询!
也就是说列里含有那些字段!