C++を使用して接続するPervasiveデータベースがあります。これまでの私のクエリはすべてパラメータ化されています。つまり"SELECT USER.NAME FROM USER WHERE USER.ID = ?"
、正常に機能します。しかし、検索クエリでは、WHERE句でLIKEを使用しているため、パラメーターとワイルド文字(%)を使用できないようです。
私のクエリは次のよう"SELECT * FROM DOG WHERE DOG.NAME LIKE '%?%'"
になります。パラメータ?-markの周りに2つの'があるため、これは失敗し、名前に?-markが含まれる犬を検索しました。SQL Serverでは、これはおそらくのような文字列を連結することで解決されます"SELECT * FROM DOG WHERE DOG.NAME LIKE '%' + ? + '%'"
が、これはPervasiveでは無効な構文です(このページの下部を参照してください:http ://ww1.pervasive.com/library/docs/psql/950/sqlref/sqlref- 04-55.html)。
また、パラメーター自体に%記号を追加しようとしましたが、それも機能していないようです。
誰かがこれに対する解決策を知っていますか?
EDIT1: いくつかのC ++コードの例:
CString sqlCommand = "SELECT * FROM DOG WHERE DOG.NAME LIKE ?;";
m_pAdoCommand->CommandText = _bstr_t(sqlCommand);
m_pAdoCommand->Parameters->Append( m_pAdoCommand->CreateParameter("p0", adVarChar, adParamInput, 25, _bstr_t("'%bob%'")) );
m_pAdoRecordset = m_pAdoCommand->Execute(NULL,NULL,adCmdText);
(m_pAdoCommand
は、_CommandPtr
でありm_pAdoRecordset
、_RecordsetPtr
です。この例のSQLテーブルの名前を変更して、ここで意味をなすようにしました。)
上記のコードは、名前が付いた犬の行を返しますが、名前'%bob%'
にbobが含まれているすべての犬を返すようにしたいと思います。