一系统中需要验证所输入的用户名(组)是否已经存在。实例:输入框: 张三,李四,王五要验证数据库中是否存在以上人名中的一个或是多个并显示出来。
求助
1:如何做这种以标点符号分割的多人名验证?
2:如果采用不同的标点符号,该怎么处理(例如,。?,.?)

解决方案 »

  1.   

    select * from table where name in('张三,李四,王五')
      

  2.   

    select * from table where charindex(name,'张三,李四,王五')>0
      

  3.   

    select * from table where name in('张三','李四','王五') 
      

  4.   

    至少有一个规则,
    要不然你输入:张三?李四,王五
    那就有点过分了
    --
    可以split写个方法,一个一个区匹配。
    然后返回一个字符串。当然类似楼上的方法是效率最高的
      

  5.   

    declare @name nvarchar(100)
    select * from tb where charindex(@name ,'张三,李四,王五')>0
      

  6.   

    1:select * from table where charindex(name,'张三,李四,王五')>0
    2: s.split分割,参数中输入标点符号
      

  7.   

    select * from tb where charindex(name ,'张三,李四,王五')>0
      

  8.   

    使用正则将符号全部替换在sql中使用in即可
      

  9.   

    string name=txtName.Text.replace(",",",")select * from table where name in('"+name+"') 
      

  10.   

    create table #User
    (
      UserName nvarchar(50)
    )
    insert into #User select '张三'
    insert into #User select '李四'
    insert into #User select '王五'declare @str nvarchar(50)
    set @str='张三,李四,王五'
    select UserName from #User where charindex(UserName,@str)>0UserName
    --------------------------------------------------
    张三
    李四
    王五
      

  11.   


    create table #User
    (
      UserName nvarchar(50)
    )
    insert into #User select '张三'
    insert into #User select '李四'
    insert into #User select '王五'declare @str nvarchar(50)
    set @str='张三,李四,王五'
    select UserName from #User where charindex(UserName,@str)>0UserName
    --------------------------------------------------
    张三
    李四
    王五
    正解
      

  12.   

    分割不一定要放到SQL中处理,直接用asp.net处理,然后再传入参数.
    如果可能有不同的标点符号,最好的办法是用正则.
      

  13.   

    引用 18 楼 ws_hgo 的回复:
    SQL codecreatetable #User 

      UserNamenvarchar(50) 
    )insertinto #Userselect'张三'insertinto #Userselect'李四'insertinto #Userselect'王五'declare@strnvarchar(50)set@str='张三,李四,王五'select UserNamefrom #Userwher?- 
    这句话是什么意思?qiuzhu 
      

  14.   

    大家的帖子我都看了。。只是我现在做的是用 StringBuilder strbld = new StringBuilder();
                BLL.BaseCase basecase = new YingKe.BLL.BaseCase();
                DataRowCollection dcAclient = basecase.GetAllList().Rows;
                DataTable ds = new DataTable();
                ds = basecase.GetAllList().Clone();
                foreach (DataRow item in dcAclient)
                {
                    string[] b = item["Privies"].ToString().Split(new char[] { ',', ',', '.', '、', ':', ':', '。', '|', '?', '?' });
                    for (int i = 0; i < b.Length; i++)
                    {
                        string[] a = tbDelPerson.Text.Trim().Split(new char[] { ',', ',', '.', '、', ':', ':', '。', '|', '?', '?' });                    for (int j = 0; j < a.Length; j++)
                        {
                            if (a[j].ToString() == b[i].Trim())
                            {
                                ds.Rows.Add(item.ItemArray);
                            }
                        }                }
                }
     if (ds.Rows.Count != 0)
                {
                    this.Repeater1.DataSource = ds;
                    this.Repeater1.DataBind();
                    chongtu = true;
                    Response.Write("<script   language='javascript'>alert('存在冲突!');</script>");
                }
    现在的问题是我要用到查询张三或者张大山都可以查询的道。。也就是说要实现分隔符里面的模糊查询。。
      

  15.   

    提供一个思路,自己实现吧
    string   nameSrc = "张三?,??李四,,。,王五 ..."; 
    string[] tmpArr = (select use_name  from table);
     foreach(string tmpName in tmpArr )
     {
         if(nameSrc.contains(tmpName ))
         {
             ..........;
         }
     } 
      

  16.   

    select * from table where charindex(name,'张三,李四,王五')>0
      

  17.   

    string name=txtName.Text.replace(",",",") select * from table where name in('"+name+"') 
     
     
      

  18.   

    要模糊查询的话, 可能要用到全文搜索了, 你可以去网上找一下sqlserver 里的全文搜索配置方法。 需要一整套的流程做下来才可以。
    WHERE CONTAINS(Name, '张三') OR CONTAINS(Name, '李四')
      

  19.   

    select * from tb where charindex(name ,'张三,李四,王五')>0
      

  20.   

    select * from table where charindex(name,'张三,李四,王五')>0