[Seasar-user:20338] Re: S2JDBCのバインド変数について

川口 拓也 [E-MAIL ADDRESS DELETED]
2010年 11月 16日 (火) 15:56:14 JST


お返事ありがとうございます。
正に小林様の仰っていた通りで、カラムの型がchar型でした。その為、空白を補填してやらないと希望通りの出力をしてくれない状態でした。
おかげさまで解決いたしました。
ありがとうございます!
 
> Date: Tue, 16 Nov 2010 15:16:42 +0900
> From: [E-MAIL ADDRESS DELETED]
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:20336] Re: S2JDBCのバインド変数について
> 
> 小林 (koichik) です.
> 
> Date: Tue, 16 Nov 2010 05:40:57 +0000
> From: 川口 拓也 <[E-MAIL ADDRESS DELETED]>
> Subject: [Seasar-user:20335] S2JDBCのバインド変数について
> 
> > List<"ENTITY"> results = jdbcManager.from("ENTITY".class).where("COLUMN.NAME= '条件'").getResultList(); 
> > 
> > という様にWHERE句の条件として直接値を打ち込むときちんと検索件数を持ったリストが返ってくるのですが(9件) 
> > 
> > List<"ENTITY"> results = jdbcManager.from("ENTITY".class).where("COLUMN.NAME= ?","条件").getResultList(); 
> > 
> > バインド変数を使って検索するとなぜか検索件数が0件になってしまいます。 
> > 
> > コンソールに出力されるSQLは全く同じで、バインド変数を使った時のSQLをSQLコマンドラインにコピーペーストして実行してみると検索件数が9件になります。 
> > バインド変数を使った時だけ、この様な減少が起きてしまうのですが原因が分かりません。何故でしょうか。 
> 
> 該当のカラムが CHAR 型 (*固定長*の文字列)なのでは
> ありませんか?
> 
> RDBMS によって違うかもしれませんが、Oracle などでは
> リテラルでは長さが足りない場合に空白を補って比較
> してくれますが、バインド変数では正しい長さの文字列を
> 渡さないと意図したとおりの結果にならなかったはず。
> 
> 該当カラムのデータ型を確認して、CHAR 型だった場合は
> 正しい長さの文字列を渡すようにしてください。
> 
> 
> -- 
> <component name="koichik">
> <property name="fullName">"Koichi Kobayashi"</property>
> <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
> <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
> <property name="twitter">"http://twitter.com/koichik"</property>
> </component>
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
 		 	   		  
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20101116/ee2aafbd/attachment.html>


Seasar-user メーリングリストの案内