写一个存储过程,实现在表上的模糊搜索
GetList(
   @TableName VarChar(50),    --表名
   @Value VarChar(1000),      --要查找的值
)
说明,要在该表的所有字符串的列上进行比较查找的满足要求的值,如果值中包含有空格,则该值代表两个部分,要查找的结果中只需满足其中一个部分就可以了,如“福建师范大学  张三”则只要列中含有“福建师范大学”或者“张三”就满足要求。

解决方案 »

  1.   

    GetList( 
      @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
      

  2.   

    create proc GetList 
      @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补充关键字.
      

  3.   

    create proc GetList 
      @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'试试这样是否可行.
      

  4.   

    GetList( 
      @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
      

  5.   

    create table ta(id int identity(1,1),col nvarchar(100))
    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           福建师范大学  张三
    */
      

  6.   

    是不难!小弟初学!
    我的意思是要是我执行 exec '福建师范大学 张三'
    它回自动查询出含有福建师范大学和含有张三的列!
    是一个模糊查询!
    也就是说列里含有那些字段!