2016-05-27 10 views
0

私はクエリを作成し、大文字小文字を区別しないフィールドの結果のグループ化を試みています。ここで私が試したことはありますが、うまくいきません。SQLiteの大文字と小文字を区別しないGROUP BYクエリ

group byの後にキーワードを下げても違いはありません。

"SELECT " + MediaStore.Audio.Media.ARTIST + ", count(LOWER(" + MediaStore.Audio.Media.ARTIST + 
        ")) FROM " + PlaylistDB.TABLE_ALL_TRACKS + " GROUP BY LOWER(" + MediaStore.Audio.Media.ARTIST 
        +") HAVING " + MediaStore.Audio.Media.ARTIST 
        + " LIKE ? ORDER BY "+ MediaStore.Audio.Media.ARTIST + " COLLATE NOCASE ASC"; 

また、私はCOLLATE NOCASEを試しました。また、動作しません。

"SELECT " + MediaStore.Audio.Media.ARTIST + ", count(LOWER(" + MediaStore.Audio.Media.ARTIST + 
       ")) FROM " + PlaylistDB.TABLE_ALL_TRACKS + " GROUP BY LOWER(" + MediaStore.Audio.Media.ARTIST 
       +") HAVING " + MediaStore.Audio.Media.ARTIST 
       + " LIKE ? ORDER BY "+ MediaStore.Audio.Media.ARTIST + " COLLATE NOCASE ASC"; 

大文字と小文字を区別しないグループを作成する方法はありますか。

+1

実際にDBに送信している内容を確認するために、最後に連結されたSQL文を出力してください。これらの変数の値はわかりません。 –

+2

私のために働く。ここでは[SQLFiddle](http://sqlfiddle.com/#!5/40036/3/0)です。グループバイ表現で 'lower()'を削除すると、大文字と小文字を区別してグループ化されます。 'lower()'では大文字と小文字を区別しません。 –

+0

@JimGarrison良いリソースを共有していただきありがとうございます。 – dooplaye

答えて

0

問題を修正しました。下位キーワードは、グループ別に細かく動作します。しかし、私の間違いは、いくつかのフィールドは最後に余分なスペースがあったということでした。だから私はtrimキーワードを使って修正しました。以下のコードは必要に応じて動作します

"SELECT " + MediaStore.Audio.Media.ARTIST + ", count(LOWER(TRIM(" + MediaStore.Audio.Media.ARTIST + 
       "))) FROM " + PlaylistDB.TABLE_ALL_TRACKS + " GROUP BY LOWER(TRIM(" + MediaStore.Audio.Media.ARTIST 
       +")) HAVING " + MediaStore.Audio.Media.ARTIST 
       + " LIKE ? ORDER BY "+ MediaStore.Audio.Media.ARTIST + " COLLATE NOCASE ASC"; 
関連する問題