- PR -

ODP.NETを使った曖昧検索

投稿者投稿内容
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2007-02-28 20:53
ODP.NETを使った曖昧検索について教えていただきたいのですが、

VB.NETにてOracleに検索を行う場合のバインドする変数が
曖昧検索で使用する検索条件(以下のような)に当たる場合
エラーになってしまいます。
曖昧検索の検索条件にバインドは使えないのでしょうか?


cmd.CommandText = "SELECT * FROM TABLE WHERE FIELD LIKE %:ename%"
Dim pEname As OracleParameter = cmd.Parameters.Add("ename", "steve")
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2007-02-28 21:03
引用:

Kiraさんの書き込み (2007-02-28 20:53) より:
ODP.NETを使った曖昧検索について教えていただきたいのですが、

VB.NETにてOracleに検索を行う場合のバインドする変数が
曖昧検索で使用する検索条件(以下のような)に当たる場合
エラーになってしまいます。
曖昧検索の検索条件にバインドは使えないのでしょうか?


cmd.CommandText = "SELECT * FROM TABLE WHERE FIELD LIKE %:ename%"
Dim pEname As OracleParameter = cmd.Parameters.Add("ename", "steve")




あいまい検索の%をCommandText中にではなく、
パラメータの値に指定してあげてください。
THREE-ONE
常連さん
会議室デビュー日: 2006/08/17
投稿数: 36
投稿日時: 2007-02-28 22:55
いま、手元に試す環境がないので間違っていたら申し訳ありません。
cmd.CommandText = "SELECT * FROM TABLE WHERE FIELD LIKE '%' || :ename || '%'"
でいけませんか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-03-01 07:36
ename 内の特殊文字(%のこと)を無効化してから、NALさんの方法
_________________
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2007-03-02 10:18
皆様、有難う御座います。

cmd.CommandText = "SELECT * FROM TABLE WHERE FIELD LIKE %:ename%"
Dim pEname As OracleParameter = cmd.Parameters.Add("ename", "steve")



cmd.CommandText = "SELECT * FROM TABLE WHERE FIELD LIKE :ename"
Dim pEname As OracleParameter = cmd.Parameters.Add("ename", "%steve%")
としてみたり、


%steve%を\%steve\%や%%steve%%としてみたりしましたが、
うまくいきませんでした。
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2007-03-02 10:18
皆様、有難う御座います。

cmd.CommandText = "SELECT * FROM TABLE WHERE FIELD LIKE %:ename%"
Dim pEname As OracleParameter = cmd.Parameters.Add("ename", "steve")



cmd.CommandText = "SELECT * FROM TABLE WHERE FIELD LIKE :ename"
Dim pEname As OracleParameter = cmd.Parameters.Add("ename", "%steve%")
としてみたり、


%steve%を\%steve\%や%%steve%%としてみたりしましたが、
うまくいきませんでした。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-03-02 10:31
引用:

%steve%を%steve%や%%steve%%としてみたりしましたが、
うまくいきませんでした。


まずは SQL*Plus 等でうまくいくような SQL にしてから ADO.NET でコーディングした方が良いと思いますよ。

SELECT * FROM TABLE WHERE FIELD LIKE %:ename%
は構文エラーだし、
cmd.Parameters.Add("ename", "%steve%")
は %steve% なんていうパラメータは存在しないですから。

_________________
かるあ のメモスニペット
HIRO
大ベテラン
会議室デビュー日: 2002/06/21
投稿数: 109
投稿日時: 2007-03-02 21:23
http://otndnld.oracle.co.jp/easy/dotnet/aspdotnet/index.htmlは、参考になりませんか?
_________________
--------------------------------------------
HIRO's.NET PowerShell,VB.NET,C#のTipsを掲載しています
HIRO's.NET Blog PowerShell,VB.NET,C#を中心とした技術ネ

スキルアップ/キャリアアップ(JOB@IT)