现在有这么一列
  aa
123,1,5
311,1,5
131,1,5我想第一个,前面的是我要的条件值,也就是
select * from db where aa=311 现在我不知道怎么处理这个aa,才能得到我想要的记录,用模糊查询的话很不准确。

解决方案 »

  1.   

    select * from db where  SUBSTRING(aa,1,3)='311' 应该可以的
      

  2.   

    select * from db where  left(aa, CHARINDEX(',', aa)-1 )=‘311’
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 最新版本:20070130http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  3.   

    select * from db where CHARINDEX(',311,' , ',' + aa + ',')>0
      

  4.   

    select * from db where  left(aa, CHARINDEX(',', aa)-1 )=‘311’
    ---------------------------
    (所影响的行数为 3 行)服务器: 消息 536,级别 16,状态 3,行 1
    向 substring 函数传递了无效的 length 参数。
    查了n次。都是只能显示3行,多了就出错。不知道为什么。
      

  5.   

    select * from db where Substring(aa,0,CharIndex(aa,','))='311'
      

  6.   

    那是因為aa字段中有的記錄根本不存在,
    如下面這樣查詢:
    select * from db where case when CHARINDEX(',', aa)>=1 then left(aa, CHARINDEX(',', aa)-1 ) else aa end='311'
      

  7.   

    select * from db where aa like '311%'  只有右边的%
      

  8.   

    select * from db where aa like '%311'
    这个就行呀,和上面的都是一个道理
      

  9.   

    string parm = "311";
    int len = parm.Length;
    StringBuilder sb = new StringBuilder();
    sb.Append("select * from db where  SUBSTRING(aa,1,");
    sb.Append(len.ToString());
    sb.Append(")='");
    sb.Append(parm);
    sb.Append("'");
    string sql = sb.ToString();
      

  10.   

    select * from db where aa like '311,%'
      

  11.   

    select * from db where  left(aa, CHARINDEX(',', aa)-1 )='311'
      

  12.   

    select * from db where  CHARINDEX(',', aa) > -1
      

  13.   

    谢谢各位了,我从上面开始试的,用ombpk() 的就可以了,估计别人的也可以但是我没来的及试那,有时间在看看,在次感谢。