我有一个包含数字或字符串的列。列的类型是varchar。
通常当我们使用字符串字段对其进行排序时,所有数字首先出现,然后字符串开始。但我首先想要所有字符串,然后是数字。
TIA!
答案 0 :(得分:1)
您必须在两个单独的查询中编写它。一个用于选择数字,另一个用于字符串。我最好创建第二列(一个用于数字,一个用于字符串),这样可以更轻松,更快速地运行这两个查询。
答案 1 :(得分:0)
这对我有用......
Select * from Table order by stringfield+0;
编辑:http://www.sqlite.org/datatypes.html(第4.0点)
更新:试试这个....
select * from Table where LENGTH(trim(stringfield,"0123456789 ") )=0 union select * from table order by stringfield;
答案 2 :(得分:0)
以下内容(如上所述的两个查询):
select * from Table where LENGTH(trim(stringfield,"0123456789 ")) > 0; select * from table where LENGTH(trim(stringfield,"0123456789 ")) = 0;
第一个选择应仅返回非数字值,而第二个选择应仅返回数值。
对于包含数字和字符串数据混合的表,首先输出字符串,然后输出数字。
答案 3 :(得分:0)
您是否考虑过制作custom collation-function?我自己从来没有用过这个,但听起来就像你需要的那样。