記事
· 4 hr 前 2m read

GROUP BY や DISTINCT クエリで大文字で検索されてしまう場合の対処方法

これは InterSystems FAQ サイトの記事です。
 

何の設定も行なっていない場合、GROUP BYやDISTINCTで指定したフィールドは大文字小文字を区別せずに全て大文字として処理されます。

これはGROUP BYやDISTINCTのグループ化がフィールドに対して定義された照合タイプに基づいて行われ、その文字列照合の既定値がSQLUPPERになっているためです。

以下のドキュメントに説明がある通り、DISTINCT は、フィールドに対して定義された照合タイプに基づいて、文字列値をグループ化します。

大文字/小文字の区別と DISTINCT の最適化

これを変更する方法は、以下の3種類になっています。

(A) %SQLSTRING または %EXACT照合関数を使用する
(B) フィールドの文字列照合を SQLSTRINGに変更する
 また、フィールドにインデックスが設定されている場合には、インデックスの文字列照合も SQLSTRINGに変更する
(C) 管理ポータルで設定を変更する 

※(B)について補足
・文字列照合をEXACTに設定しても動作しますが、一般的にはSQLSTRINGの使用が推奨されています。
・フィールドの文字列照合とインデックスの文字列照合は、同じ設定にすることが推奨されています。

※(C)の設定手順

システム > 構成 > SQL  - (構成設定) 
GROUP BY と DISTINCT クエリでオリジナルの値を結果に返す にチェックを入れる

※この設定変更を有効にするためには、クエリキャッシュの削除が必要です。

 

詳細は、以下のドキュメントをご参照ください。

ドキュメント: GROUP BY

ドキュメント: DISTINCT

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください