我正在开发一个Android应用程序,用户可以使用不同的选项来排序来自数据库的显示数据.目前我传递给Androids query()方法的orderBy字符串如下所示:
"LOWER("+columnName+") ASC"
这样做的问题是,如果columnName指定的列中的数据类型是整数,则在其上调用LOWER()将使其按字母顺序排序,即仅基于最左边的数字,这当然没有任何意义对于数字数据.因此,如果列的数据类型不是整数,我只想应用LOWER().我的想法是这样的声明:
"CASE WHEN [data type of columnName is integer] THEN "+columnName+" ASC ELSE LOWER("+columName+") ASC END"
括号中的部分是我不知道该怎么做的.SQLite是否提供了确定列数据类型的函数?
您真的想要列的类型或值的类型吗?(SQLite是动态类型的,因此区别很重要.)
如果你想要后者,你可以使用typeof(columnName)
.
使用:
PRAGMA table_info(table-name);
获取表格信息.