简体   繁体   English

SQLite中不区分大小写的GROUP BY查询

[英]Case insensitive GROUP BY query in SQLite

I am trying to make query and make case insensitive grouping of results by a field. 我试图进行查询并使按字段区分大小写的结果分组。 Here is what I tried, but it doesn't work. 这是我尝试过的方法,但是不起作用。

Lower keyword after group by doesn't make any difference. 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";

Also I tried COLLATE NOCASE. 我也尝试过COLLATE NOCASE。 Also doesn't work. 也行不通。

"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";

Is there anything you can suggest me to get case insensitive grouping? 您是否可以建议我进行不区分大小写的分组?

I fix the issue. 我解决了这个问题。 The lower keyword works with group by fine. Lower关键字可以与group by一起使用。 But my mistake was that some fields were with additional space at the end. 但是我的错误是某些字段的末尾有额外的空间。 So I fixed it by using the trim keyword. 因此,我使用trim关键字修复了它。 The code below works as I need 下面的代码根据需要工作

"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";

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM