5.コメント /* コメント */はありますが、-- の1行コメントがありません。 6.LIKE検索の文字列連結 なんと、LIKE検索時に、LIKE '%' || '文字列' || '%'のような 文字列連結をするとエラーになるようです。 よって、CONDITIONが"CONTAINS","STARTS","ENDS","NOT_CONTAINS" のSQLは、HiRDBではエラーになると思われます・・・ 対策としては、下記の2パターンがあると思います。 (1)buyerItemCd_CONTAINS,buyerItemCd_STARTS,buyerItemCd_ENDS, buyerItemCd_NOT_CONTAINSを作成し、%をつけた文字列を設定。 SQLファイルとしては、現状の'%'|| || '%'を削除。 (2)複数入力ありのSQLと同様に、ジョンギルユーティリティで、 検索条件SQLは作成してしまう。 /*$conditionSql*/ いずれにせよLIKE検索は、%と_のESCAPE対応が必要なので、どちらかの 対応は必要になります。 どうせ複数入力ありの対応をやるなら(2)でも良いかなぁと思っています。 ユーザのロールや所属に合わせた範囲指定などだけをSQLファイルに 指定してもらうイメージです。 【現状のSQLファイル】 /*IF buyerItemCd != null && buyerItemCd_CONDITION == "CONTAINS" */AND BUYER_ITEM_CD LIKE '%' || /*buyerItemCd*/ || '%'/*END*/ /*IF buyerItemCd != null && buyerItemCd_CONDITION == "STARTS" */AND BUYER_ITEM_CD LIKE '%' || /*buyerItemCd*//*END*/ /*IF buyerItemCd != null && buyerItemCd_CONDITION == "ENDS" */AND BUYER_ITEM_CD LIKE /*buyerItemCd*/ || '%'/*END*/ /*IF buyerItemCd != null && buyerItemCd_CONDITION == "NOT_CONTAINS" */AND BUYER_ITEM_CD NOT LIKE '%' || /*buyerItemCd*/ || '%'/*END*/ ちなみに、ESCAPE処理を検証したところ、下記の感じでよさそうです。 LIKE '文字列' ESCAPE '|'とした場合の文字列の組み立て形。 (1)画面入力された文字の|を||に置換 (2)画面入力された文字の%を|%に置換 (3)画面入力された文字の_を|_に置換 (4)画面入力された文字の%を|%に置換 (5)画面入力された文字の_を|_に置換 (6)CONTAINS、STARTS、ENDS、NOT_CONTAINSの条件に合わせて、%を前後に追加 例:画面の検索条件 テスト|12345→ '%テスト||12345%'
2009년 10월 13일 화요일
HiRDB sql
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기