[Seasar-user:13475] Re: [DBFlute] LIKEをORでつなげたい

kubo [E-MAIL ADDRESS DELETED]
2008年 3月 29日 (土) 03:49:40 JST


久保です。

加藤さん

https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-basic-example
MemberCBTest#test_selectList_union_LikeSearch_Tx()
にExample実装してみました。

2008/3/29 kubo <[E-MAIL ADDRESS DELETED]>:
> 久保です。
>
>  加藤さん、こんにちは
>
>  ANDとかORという感じではなく、
>
>  select ...
>    from XXX
>   where YYY like 'a%'
>  union
>  select ...
>    from XXX
>   where YYY like 'b%'
>  union
>  select ...
>    from XXX
>   where YYY like 'c%'
>
>  という感じのSQLになるはずですが、
>  そうならないでしょうか?
>
>  # ちなみにsplitByXxx()は利用せず、
>  # 自分でsplitで「for (String keyword : keywordList) {」
>  # するイメージです。
>
>  2008/3/28 Junichi Kato <[E-MAIL ADDRESS DELETED]>:
>
>
> > 久保さん、
>  >  加藤です。
>  >
>  >  以下を試してみたのですが、ANDでつながってしまうようです。
>  >  ORでつなげるのは無理ですかね?
>  >
>  >
>  >  kubo さんは書きました:
>  >
>  >
>  > > 久保です。
>  >  >
>  >  > 加藤さん、こんばんは
>  >  >
>  >  > 昼はちょっと取り込んでて取り急ぎコメントでしたが、
>  >  > 実装イメージとしては以下のような感じになると思います。
>  >  > (動かしてないのであくまでイメージということで)
>  >  >
>  >  > XxxCB cb = new XxxCB();
>  >  > cb.setupSelect_...
>  >  > boolean first = true;
>  >  > for (String keyword : keywordList) {
>  >  >     if (first) {
>  >  >         cb.query().setYyy_LikeSearch(keyword, new Like...);
>  >  >         first = false;
>  >  >         continue;
>  >  >     }
>  >  >     XxxCB unionCB = new XxxCB();
>  >  >     unionCB.query().setYyy_LikeSearch(keyword, new LiKe...);
>  >  >     cb.union(unionCB.query())
>  >  > }
>  >  >
>  >  > 2008/3/26 Junichi Kato <[E-MAIL ADDRESS DELETED]>:
>  >  >
>  >  >> 久保さん、
>  >  >> 加藤です。どうもです。
>  >  >>
>  >  >> 了解しました。unionでやってみます。
>  >  >>
>  >  >>
>  >  >> 08/03/26 に kubo <[E-MAIL ADDRESS DELETED]> さんは書きました:
>  >  >>
>  >  >>
>  >  >>
>  >  >>> 久保です。
>  >  >>>
>  >  >>> 加藤さん、こんにちは
>  >  >>>
>  >  >>> 取り急ぎコメントさせて頂きます。
>  >  >>> splitByXxx()をor条件とする機能は今はありません。
>  >  >>> OR条件に関しては、ConditionBean.union()をご利用下さい。
>  >  >>> 但し、splitByXxx()で一本の文字列を分解するのは自分で
>  >  >>> 処理することにはなってしまいます。
>  >  >>>
>  >  >>>
>  >  >>> 2008/3/26 Junichi Kato <[E-MAIL ADDRESS DELETED]>:
>  >  >>>
>  >  >>>> 加藤です。
>  >  >>>>
>  >  >>>>  お世話になります。
>  >  >>>>  DBFluteの質問です。
>  >  >>>>
>  >  >>>>
>  >  >>>>
>  >  >> http://dbflute.sandbox.seasar.org/ja/tips-condition_bean_comparison.html
>  >  >>
>  >  >>>>  〉{Split処理} splitByXxx()を呼び出すことで、引数のvalueをSplitして複数の
>  >  >>>>  AND条件として付与できます。
>  >  >>>>  とあるのですが、
>  >  >>>>
>  >  >>>>  LIKEにて複数の検索条件をORでつなげる場合はどのようにするのがよいのでしょ
>  >  >>>>  うか?
>  >  >>>>  アドバイスをお願いいたします。
>  >  >>>>
>  >  >>>>
>  >  >>>>
>  >  >>>>
>  >  >>>>
>  >  >>>>  _______________________________________________
>  >  >>>>  Seasar-user mailing list
>  >  >>>>  [E-MAIL ADDRESS DELETED]
>  >  >>>>  https://ml.seasar.org/mailman/listinfo/seasar-user
>  >  >>>>
>  >  >>>>
>  >  >>> _______________________________________________
>  >  >>> Seasar-user mailing list
>  >  >>> [E-MAIL ADDRESS DELETED]
>  >  >>> https://ml.seasar.org/mailman/listinfo/seasar-user
>  >  >>>
>  >  >>>
>  >  >> _______________________________________________
>  >  >>  Seasar-user mailing list
>  >  >>  [E-MAIL ADDRESS DELETED]
>  >  >>  https://ml.seasar.org/mailman/listinfo/seasar-user
>  >  >>
>  >  >>
>  >  >>
>  >  > _______________________________________________
>  >  > Seasar-user mailing list
>  >  > [E-MAIL ADDRESS DELETED]
>  >  > https://ml.seasar.org/mailman/listinfo/seasar-user
>  >  >
>  >
>  >  _______________________________________________
>  >  Seasar-user mailing list
>  >  [E-MAIL ADDRESS DELETED]
>  >  https://ml.seasar.org/mailman/listinfo/seasar-user
>  >
>


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