クエリオブクエリ実行時の空白処理を変更する

※このFAQは古い情報ですが、定期的に問い合わせがあるため、FAQ記事としても公開します

データベースからカラム幅に満たない Char 型のデータを取得すると、末尾に満たない分の空白が付加されたデータを受け取ります。これはChar型が固定長の文字列を格納するため正しい動作となりますが、そのクエリ結果をクエリオブクエリでSELECTで検索しようとした際に、ColdFusion 10までは空白が自動的に削除された値を検索していました。

クエリオブクエリで検索する際に自動的に空白を削除する動作はおかしいということで不具合登録がなされ、ColdFusion 11で修正されました。
https://tracker.adobe.com/#/view/CF-4100830

しかしながら、不具合が修正された後、以前の動きに戻すことを希望する声があったことから、ColdFusion 11のUpdate 9で、以前のバージョンに戻すフラグが追加されています。「 -Dcoldfusion.trim.dbresult=true」のフラグをJVM引数に付加することで、一部の動きを以前と同じに戻すことができるようになりました。

このフラグは必要に応じて個別に追加するものですので、ColdFusion 2023や2021で、その動きにしたい場合は、利用中のColdFusionのJVM引数に、フラグを追加してください。

【手順】

  1. ColdFusion Administratorにログインし、「サーバーの設定 > JavaとJVM」の『JVM 引数』(ColdFusion クラスパスではありません)に下記の設定を追加し、[変更の送信]ボタンを押してください
     -Dcoldfusion.trim.dbresult=true
    • 項目と項目の区切りは空白で、改行は入れないでください。誤った位置に改行が入ったりすると、ColdFusionが起動しませ
    • [cf_root]/{インスタンス(cfusion等)}/bin/jvm.cofigファイルをテキストエディタ(メモ帳等)で開き、java.argsの引数に上記を追加する方法もございます。その際は、jvm.configファイルを修正する前にColdFusion を停止してください
  2. ColdFusion を再起動します
    • もし、ColdFusionが起動しなくなった場合は、手順1.の引数の追加に失敗した可能性がありますので[cf_root]/{インスタンス(cfusion等)}/bin/内の jvm.bak を jvm.config にリネームして変更前の状態に戻し、再び 1.の設定をやり直してください
  3. 起動したら、クエリオブクエリの動作を確認してください

尚、このフラグを使用する場合は、以下の点に注意してください

  • フラグを追加し修正前の動作に戻すと、selectやwhereで指定されている列の文字列の前後に空白があるとクエリオブクエリの際に強制的に除去します
  • 修正後の動作と修正前の両方の動作を混在させることはできません(フラグを付けるか付けないかのどちらかとなります)

 


記事公開日:2024年06月05日
最終更新日:2024年06月05日


x

Sample Modal Window

This is just a sample…

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.

Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.