我想从 sql 中对这个测试表进行排序:
CREATE TABLE test (
_id integer primary key autoincrement,
val text
);
insert into test (_id, val) values ("49","-10");
insert into test (_id, val) values ("53","-6");
insert into test (_id, val) values ("63","-6");
insert into test (_id, val) values ("9","-5");
insert into test (_id, val) values ("56","-5");
insert into test (_id, val) values ("73","-5");
insert into test (_id, val) values ("38","-4");
insert into test (_id, val) values ("52","-4");
insert into test (_id, val) values ("55","-4");
insert into test (_id, val) values ("64","-4");
insert into test (_id, val) values ("81","-4");
insert into test (_id, val) values ("50","-3");
insert into test (_id, val) values ("60","-3");
insert into test (_id, val) values ("78","-3");
insert into test (_id, val) values ("27","-2");
insert into test (_id, val) values ("1","80");
insert into test (_id, val) values ("2","85");
insert into test (_id, val) values ("3","100");
insert into test (_id, val) values ("4","120");
insert into test (_id, val) values ("5","-");
insert into test (_id, val) values ("6","0");
insert into test (_id, val) values ("7","0 (init)");
insert into test (_id, val) values ("8","-1");
insert into test (_id, val) values ("23","1");
insert into test (_id, val) values ("67","3");
insert into test (_id, val) values ("14","4");
insert into test (_id, val) values ("16","4");
insert into test (_id, val) values ("22","4");
insert into test (_id, val) values ("61","4");
insert into test (_id, val) values ("37","5");
insert into test (_id, val) values ("51","5");
insert into test (_id, val) values ("76","5");
insert into test (_id, val) values ("32","6");
insert into test (_id, val) values ("35","6");
insert into test (_id, val) values ("71","6");
insert into test (_id, val) values ("88","6");
insert into test (_id, val) values ("18","7");
insert into test (_id, val) values ("44","7");
insert into test (_id, val) values ("39","9");
insert into test (_id, val) values ("90","9");
insert into test (_id, val) values ("91","9");
insert into test (_id, val) values ("69","16");
insert into test (_id, val) values ("105","-");
insert into test (_id, val) values ("36","0");
insert into test (_id, val) values ("65","0");
insert into test (_id, val) values ("75","0");
insert into test (_id, val) values ("106","d");
insert into test (_id, val) values ("43","noise");
从这里使用修改后的 sql: SQLite 排序问题
select _id, case when cast(val as number) = 0 then val when cast(val as number) <>0 then cast(val as number) end as sorting from test order by sorting;
我得到了几乎完美的结果,但是:0 值不在正负之间