Phi*_*hun 7 sql sqlite android
我有一个SQL游标的小问题.我正在尝试在android上执行SQL命令.我试图按案例排序返回的内容,但似乎系统不接受返回的值(?!)我已经尝试了一切!你有解决方案吗?;)
cursor = db.rawQuery(c, null);
String c = "SELECT * FROM characters WHERE UPPER(descriptions) LIKE '%" +
TextUtils.join("%", arr) + "%' UNION ALL SELECT * FROM words WHERE
UPPER(descriptions) LIKE '%" + TextUtils.join("%", arr) + "%'
ORDER BY CASE WHEN UPPER(descriptions) LIKE '" + s + "' THEN 1
WHEN UPPER(descriptions) LIKE '" + s + "|%' THEN 2 WHEN
UPPER(descriptions) LIKE '%|" + s + "|%' THEN 2 WHEN UPPER(descriptions)
LIKE '%|" + s + "' THEN 2 WHEN UPPER(descriptions)
LIKE '%" + TextUtils.join(" ", arr) + "%' THEN 3 ELSE 4 END, descriptions ASC";
Run Code Online (Sandbox Code Playgroud)
我需要像这样排序命令吗?
SELECT * FROM characters WHERE UPPER(descriptions) LIKE '%" + TextUtils.join("%", arr) + "%'
UNION ALL
SELECT * FROM words WHERE UPPER(descriptions) LIKE '%" + TextUtils.join("%", arr) + "%'
ORDER BY
CASE
WHEN UPPER(descriptions) LIKE '" + s + "' THEN 1
WHEN UPPER(descriptions) LIKE '" + s + "|%' THEN 2
WHEN UPPER(descriptions) LIKE '%|" + s + "|%' THEN 2
WHEN UPPER(descriptions) LIKE '%|" + s + "' THEN 2
WHEN UPPER(descriptions) LIKE '%" + TextUtils.join(" ", arr) + "%' THEN 3
ELSE 4
END,
descriptions ASC
Run Code Online (Sandbox Code Playgroud)
谢谢 ;)
编辑:插入搜索词"测试"后的SQL命令
SELECT * FROM characters WHERE UPPER(descriptions) LIKE '%A%TEST%'
UNION ALL
SELECT * FROM words WHERE UPPER(descriptions) LIKE '%A%TEST%'
ORDER BY
CASE
WHEN UPPER(descriptions) LIKE 'A TEST' THEN 1
WHEN UPPER(descriptions) LIKE 'A TEST|%' THEN 2
WHEN UPPER(descriptions) LIKE '%|A TEST|%' THEN 2
WHEN UPPER(descriptions) LIKE '%|A TEST' THEN 2
WHEN UPPER(descriptions) LIKE '%A TEST%' THEN 3
ELSE 4
END,
descriptions ASC
Run Code Online (Sandbox Code Playgroud)
表模式:
characters (t TEXT,s TEXT,jy TEXT,descriptions TEXT)
words (t TEXT,s TEXT,jy TEXT,descriptions TEXT)
Run Code Online (Sandbox Code Playgroud)
从单个表中选择记录时,可以使用这些记录中的任何内容进行排序.
但是,当您使用UNION组合多个查询时,将对整个结果进行排序,因此您必须使用结果中的某些列进行排序.在这种情况下,这意味着您必须将计算移动到查询本身:
SELECT t, s, jy, descriptions, CASE ... END AS ordernr FROM ...
UNION ALL
SELECT t, s, jy, descriptions, CASE ... END AS ordernr FROM ...
ORDER BY ordernr,
descriptions
Run Code Online (Sandbox Code Playgroud)