like演算子使用時のエスケープについて – プログラミング – Home

like演算子使用時のエスケープについ...
 
通知
すべてクリア

like演算子使用時のエスケープについて


ももんが
 ももんが
(@ももんが)
ゲスト
結合: 18年前
投稿: 38
 

ODPを使用し、like演算子の比較値をバインド変数とし、かつある文字をエスケープしたい
場合は、どのように記述すればよいでしょうか。

cmd.CommandText = select * from テーブル where カラム like :param || '' ESCAPE
'$';
このようにCommandにセットし、

バインド値としては、「_ああ」を指定しています。
DbParameter para = cmd.CreateParameter();
para.ParameterName = param;
para.Value = $_ああ%;
cmd.Parameters.Add(para);

しかし、このようにすると以下のエラーになってしまいます。

ORA-01489: result of string concatenation is too long

バインドせずに、べたでSQLを記述すると問題なく動きます。

cmd.CommandText = select * from テーブル where カラム like '$_ああ%' ESCAPE '$';

このようなケースでは、バインドは使用できないのでしょうか。

環境は、VisualStudio2005、C#。


引用解決済
トピックタグ

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました