[Seasar-user:13515] Re: [DBFlute] LIKEをORでつなげたい
Junichi Kato
[E-MAIL ADDRESS DELETED]
2008年 4月 1日 (火) 16:31:10 JST
久保さん
加藤です。
お返事が遅れてすみませんw
以下理解できました。
が、UNIONだとSQLがぶあーっと増えてデバッグが大変なのと、やはりCBを構成す
る処理が複雑化するのでLIKEのORでつなげる機能はほしいところです。
検索対象のカラムの多いのでちょっとこの方法はつらいんですよね。。。かと
いって外だしSQLではLIKEのFOR文が書けないので実装できない。
ご検討いただけたら幸いです。
kubo さんは書きました:
> 久保です。
>
> 加藤さん
>
> 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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
Seasar-user メーリングリストの案内