我在数据库表中有数据如下:张飞_1,李四_2.类似数据
怎么查询这些带有通配符的数据。尤其是asp.net后台用 where 字段 = '张飞_1',查询无数据。我觉得就是通配符 “_”的原因。请问如何解决。谢谢。

解决方案 »

  1.   

     where 字段 = '张飞_1'这样不可能没有吧
      

  2.   

    like 的时候才跟通配符有关
      

  3.   

    如果你用的是等号,那跟通配符就没关系,
    如果用的是likewhere replace(字段,'-','*') like replace('%张飞_1','-','*')
      

  4.   

    的确如我所说,我的.net代码是这样的。sql = "SELECT goodsid, goods_name, onhand FROM dbo.View_onhand where goods_name = '"+this.DropDownList4.SelectedValue+"'";其中this.DropDownList4.SelectedValue 中就有 “张飞_1” 这样的数据,
      

  5.   

    USE TEMPDB
    GO
    DECLARE @T TABLE (COL1 VARCHAR(50))
    INSERT INTO @T
    SELECT 'A_B' UNION ALL
    SELECT 'ACB'SELECT * FROM @T WHERE COL1 LIKE 'A[_]B'
    --或者
    SELECT * FROM @T WHERE COL1 LIKE 'A$_B' ESCAPE '$'
      

  6.   

    不管怎么样,其他DropDownList4里只要不含"_"的,就能够查询出数据,只要含有“_”就查不到数据。事实上是应该有数据的。
      

  7.   

    等于号改成 like 结果不就出来了
    sql = "SELECT goodsid, goods_name, onhand FROM dbo.View_onhand where goods_name like '"+this.DropDownList4.SelectedValue+"'";
      

  8.   

    对不起各位砖家,忘了说了:
    在sql查询编辑器里面 where 字段 = '张飞_1' 是有数据的。只是在.net里面,查询带有_字符的就没有返回数据。sql = "SELECT goodsid, goods_name, onhand FROM dbo.View_onhand where goods_name = '"+this.DropDownList4.SelectedValue+"'";其实哪哪都没问题,哪哪净出些莫名其妙的怪事情。
    也不知道是asp.net问题,还是sql2005问题。
    无语中,郁闷中。
      

  9.   


    //F11单步调试,看看this.DropDownList4.SelectedValue值是啥。
    sql = "SELECT goodsid, goods_name, onhand FROM dbo.View_onhand where goods_name = '"+this.DropDownList4.SelectedValue+"'";
      

  10.   

    sql = "SELECT goodsid, goods_name, onhand FROM dbo.View_onhand where goods_name = '"+this.DropDownList4.SelectedValue+"'";
    语句对着没,有没少括号  this.DropDownList4.SelectedValue()  之类的。
      

  11.   

    #1. like 才会用到通配符,= 时不会把_当成通配符
    #2. 不用怪SQL SERVER或.NET,估计问题出在自己。调试状态下,把C#中拼合的SQL语句,直接粘贴到查询分析器中。一看便知!