SQLサーバーでワイルドカードを使うには

解決


たく  2006-12-20 06:38:06  No: 64024

お世話になります。
SQLサーバーにODBCを使ってVC++から接続しようとしています。
パラメータを使っているんですが、FileNameに完全な名前(例えばTEST1)をいれると、正常にオープンできます。
頭がTESTのデータをすべて検索するには、どのようにすれば良いでしょうか?
試しにFileName="like " + FileName + "%"にしてみてもダメでした。
よろしく、お願い致します。

  CDataBase m_Db;
  BOOL dbRet;
  BOOL Ret = TRUE;

  m_Db.m_strCodeParam = FileName;
  m_Db.m_strFilter = _T("NPDsheet_no = ?");

  try
  {
    dbRet = m_Db.Open();
  }
  catch( CDBException* e)
  {
    e->Delete();

    AfxMessageBox("データベース接続に失敗しました。", MB_OK);
    return;
  }


dairygoods  2006-12-20 20:37:13  No: 64025

> m_Db.m_strCodeParam = FileName;
> m_Db.m_strFilter = _T("NPDsheet_no = ?");

これで、? のところに 'like ファイル名%' というのが
当てはめられても期待通りには動かないと思いますが。


たく  2006-12-20 22:58:49  No: 64026

dairygoodsさま
ありがとうございます。

パラメータを使わずに、open後に目的のSQL文を作って実行しないと
ダメでしょうか?
CRecordsetのメンバー関数あたりから調べ直して見ます。


dairygoods  2006-12-20 23:42:13  No: 64027

> m_Db.m_strFilter = _T("NPDsheet_no = ?");

= で比較したいときは、こうするのだから、
like で比較したいなら、

m_Db.m_strFilter = _T("NPDsheet_no like ?");

では。


Youhei  2006-12-21 04:02:42  No: 64028

m_Db.m_strCodeParam = FileName;
m_Db.m_strFilter = _T("NPDsheet_no like ? + '%'");

SQLServer相手なら上記でいけると思う。
# CDataBaseの中で余計なことしてないって前提ね。


たく  2006-12-21 06:11:25  No: 64029

dairygoodsさま

=をlikeにして、%を付加して無事にできました。

いつも適切なご指導、有難うございます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加