1.例如:某表test中列abc,
只要列abc满足搜索内容中至少3个字符以上就查询出来。
例如列abc中内容有“我的家里人”,然后输入“我的家人”,就能查出字段abc,如果输入“我的朋友”,就不能查出字段abc,因为字段abc不能满足搜索内容至少3个字符以上,请SQL语句怎么写?
2.例如:某表test中列abc,
只要列abc满足搜索内容中任意3个字符就查询出来。
例如列abc中内容有“我的家里人”,然后输入“我的家人”,就能查出字段abc,如果输入“我的朋友”,就不能查出字段abc,因为字段abc不能满足搜索内容中任意3个字符,请SQL语句怎么写?
知道怎么写的就麻烦麻烦跟小弟说下,小弟感激不尽,谢谢!

解决方案 »

  1.   

    abc 是1列吧?SQL语句:// 搜索框你可以放一个TextBox1,你对TextBox1做个正则表达式的验证,都有现成的控件,我记不太清了,你找一下!
    string tb=TextBox1.Text.Trim();string sqlcmd="select * from test where abc like'"+tb+"'"
     
      

  2.   

    还有就是楼主说的3个以上字符还是3个以上汉字呢?1. 3个以上汉字的正在表达式:[\u4e00-\u9fa5]{3,}2. 3个以上字符的正则表达式:[a-zA-Z][a-zA-Z0-9_]{3,}
      

  3.   

    1、3个字符以上的话,直接控制搜索框的字符个数至少3个,然后再去和数据库对比string searchStr=TextBox1.Text.Trim();string sqlcmd="select * from test where charindex('"+searchStr+"',abc)>0";2、就不知道你要干啥??
      

  4.   

    写自定义SQL 函数 反回值是相同数  where dbo.getnum(字段1,'abc')>=3
      

  5.   

    创建一个函数(sz01fun1)进行判断就行了。select * from test where dbo.sz01fun1(abc,'我的家人')=1
    函数如下:
    create   function  dbo.sz01fun1
    (
    @v1 nvarchar(300),
    @v2 nvarchar(300) 
    )
    returns bit
    AS
    begin
    declare @i int,@icount int,@char char
    select @i=1 ,@icount=0
    while @i<=len(@v2)
    begin
     select @char= right(left(@v2,@i),1);
     if (charindex(@char,@v1,0)>0) 
     begin
    select @icount=@icount+1;
    if (@icount=3) return(1);--只要三个满足就行
    select @v1=replace(@v1,@char,'');--去掉重复
     
     end
     select @i=@i+1;
    endreturn (0);
    end