是否可以按字母顺序对结果进行排序,然后在从“联系人”表中提取数据时以数字方式对数据进行排序?
代码段:
cursorLoader.setSortOrder(
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC, " +
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " ASC, " +
ContactsContract.CommonDataKinds.Phone.IS_SUPER_PRIMARY + " DESC, " +
ContactsContract.CommonDataKinds.Phone.IS_PRIMARY + " DESC");
这导致数字值出现在字母值
之前答案 0 :(得分:1)
如果您的意思是显示名称可以包含数字和名称,并且您希望数字显示在最后,例如
你希望弗雷德出现在01 23456 7890之前,但是说艾伦出现在弗雷德之前,那么一种方法就是引入一种检测价值是否为数字的方法。这可以通过尝试使用CAST将值转换为数字(在此示例中为整数)来实现。
所以而不是: -
SELECT * FROM phonedata ORDER BY display_name ASC, contact_id ASC, is_super_primary DESC, is_primary DESC
导致: -
您可以使用以下内容: -
SELECT
CAST(replace(display_name,' ','') AS INTEGER) AS converted,
*
FROM phonedata
ORDER BY CAST(replace(display_name,' ','') AS INTEGER) ASC,
display_name ASC,
contact_id ASC,
is_super_primary DESC,
is_primary DESC
这会产生: -