某数据库,字段“先进事迹”值是 一大段汉字,如何把该 字段中包含 CString类型数组 str[0],str[1],……,str[10]中内容的记录全部找到?
比如 str[0]="这个可以有";str[1]="4斤沉的龙虾";……,str[10]="背个小包";也就是说,只要是字段“先进事迹”中包含   这个可以有、4斤沉的龙虾,……,背个小包   的记录都是我所想要的,不知道表达清楚没有?
我想这个可以使用 select * from 表 where 先进事迹 like 这一语句可以做到, 并且还应该用到通配符 % ,因为这里 这个可以有、4斤沉的龙虾,……,背个小包 只是 子串, 应该使用使用 %这个可以有% 这种格式。
请各位指点,并且给出具体的写法,多谢!

解决方案 »

  1.   

    sprintf(str,"select * from  table where 先进事迹 like '%s'", 字符串变量);
    试试
      

  2.   

    CString str;
    str.Format(_T("select * from  table where 先进事迹 like %\'%s\' % or 先进事迹 like %\'%s\'%  ", str[0], str[1]"))
      

  3.   

    帮等一下,学习一哈!
    如果还有别的检索字段,就做个循环,往str后面加就行了。
      

  4.   

    双引号,我没有完全去对比,只是给一个大概的例子而已,\用来转义sql语句中的'
      

  5.   

    CString strw[2]={"dds","ss"};
    CString str; 
    str.Format("select * from  table where 先进事迹 like %\'%s\'% and 先进事迹 like %\'%s\'%",strw[0],strw[1]);我这么写的,编译通过,一运行就出错。
      

  6.   

    str.Format("select * from  table where 先进事迹 like '%%%s\%%' and 先进事迹 like '%%%s\%%'",strw[0],strw[1]); 
      

  7.   

    CString strw[2]={"dds","ss"}; 
    CString str; 
    CString csz1 = "%" + strw[1] + "%";
    CString csz2 = "%" + strw[2] + "%";
    str.Format("select * from  [table] where 先进事迹 like \'%s\' or 先进事迹 like \'%s\'",csz1,csz2); 
    PS:若是包含数组中任一条件的都符合条件的用or,要符合数组中所有条件才可以的用and.
      

  8.   

    str.Format("select * from table where 先进事迹 like '%%%s\%%' and 先进事迹 like '%%%s\%%'",strw[0],strw[1]); 
    这个编译通过,生成的str也对,但是放到m_pRecordset->open函数中就会报错,并且就是这个sql语句引起的错误,不知道为什么。
    还有,'%%%s\%%'应该怎么解释,我知道%s表示字符串,那么前两个%表示什么呢,表示一个%吗,是转义的意思吗,还是其他的解释?
    请指点。 
    %% 是%的转义 报错 是SQL Server数据库吗?应该没问题,在查询分析器试下呢?? 如果是Access这样好象不对
      

  9.   

    Access 是like '*关键字*' 但也不至于报错,是不是你的Open用错了?看看这个http://blog.csdn.net/zjcxc/archive/2005/05/30/384551.aspx
      

  10.   


    CString strw[2]={"dds","ss"}; 
    CString str; 
    str.Format("select * from  table where 先进事迹 like \'%%%s%%\' and 先进事迹 like \'%%%s\%%'",strw[0],strw[1]); 
      

  11.   

    C++中输出百分号是 %% 所以 要得到 like '%相似内容%' 就应该是
    like '%%相似内容%%'相似内容用 %s 格式化那就变成了'%%%s%%'