gpt4 book ai didi

android - 当 DATE_ADDED 为 0 时,使用 DATE_ADDED 而不是 DATE_TAKEN 对查询进行排序

转载 作者:行者123 更新时间:2023-11-29 00:07:08 27 4
gpt4 key购买 nike

我想请求图像并按 DATE_TAKEN 对它们进行排序。在某些情况下,DATE_TAKEN 不可用。在这种情况下,我想使用 DATE_ADDED 作为备用。

是否可以将其合并到单个 SQL 语句中。我对此有点挣扎。

到目前为止我的代码:

String[] projection = {
MediaStore.MediaColumns._ID,
MediaStore.MediaColumns.DATA,
MediaStore.MediaColumns.MIME_TYPE,
MediaStore.Images.ImageColumns.DATE_ADDED,
MediaStore.Images.ImageColumns.DATE_TAKEN,

MediaStore.MediaColumns.TITLE,
};


String sortString = MediaStore.Images.ImageColumns.DATE_TAKEN + " ASC";

Uri target = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

Cursor cursor = getContentResolver().query(target, projection, null, null, sortString);

我的想法是这样的:

String sortString = 
" CASE "+ MediaStore.Images.ImageColumns.DATE_TAKEN +" WHEN "+
MediaStore.Images.ImageColumns.DATE_TAKEN +" == 0 THEN " +
MediaStore.Images.ImageColumns.DATE_ADDED + " ASC " +
"ELSE " + MediaStore.Images.ImageColumns.DATE_TAKEN + " ASC END";

但是我有一个错误,我什至不知道是否真的可以做这样的事情。

错误:

android.database.sqlite.SQLiteException: near "ASC": syntax error (code 1)

最佳答案

ASC 适用于用于排序的整个表达式,因此您必须一次编写它:

CASE WHEN taken == 0 THEN added ELSE taken END ASC

注意:如果您使用 NULL 而不是零,使用 coalesce 会更容易:

COALESCE(taken, added) ASC

关于android - 当 DATE_ADDED 为 0 时,使用 DATE_ADDED 而不是 DATE_TAKEN 对查询进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33034499/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com