日期:2014-05-20  浏览次数:20760 次

数据库超难的问题
现在有这么一列
    aa
123,1,5
311,1,5
131,1,5

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

------解决方案--------------------
select * from db where SUBSTRING(aa,1,3)= '311 ' 应该可以的
------解决方案--------------------
select * from db where left(aa, CHARINDEX( ', ', aa)-1 )=‘311’

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

最新版本:20070130

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
------解决方案--------------------
select * from db where CHARINDEX( ',311, ' , ', ' + aa + ', ')> 0
------解决方案--------------------
select * from db where Substring(aa,0,CharIndex(aa, ', '))= '311 '
------解决方案--------------------
那是因為aa字段中有的記錄根本不存在,
如下面這樣查詢:
select * from db where case when CHARINDEX( ', ', aa)> =1 then left(aa, CHARINDEX( ', ', aa)-1 ) else aa end= '311 '
------解决方案--------------------
select * from db where aa like '311% ' 只有右边的%
------解决方案--------------------
select * from db where aa like '%311 '
这个就行呀,和上面的都是一个道理。。。
------解决方案--------------------
left(aa,3)
------解决方案--------------------
up
------解决方案--------------------
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();
------解决方案--------------------
select * from db where aa like '311,% '

------解决方案--------------------
select * from db where left(aa, CHARINDEX( ', ', aa)-1 )= '311 '
------解决方案--------------------
select * from db where CHARINDEX( ', ', aa) > -1
------解决方案--------------------
上面发错了,就是验证311在aa里面,索引大于-1,就说明它存在