排序“1/20%项目”Firebird2.1 SQL

排序“1/20%项目”Firebird2.1 SQL,sql,vb.net,firebird2.1,Sql,Vb.net,Firebird2.1,我有一个Firebird2.1表,它存储了一个自定义项——一个名为“detacts”的varchar35列,它是这样的: 1 of 20% item 5 of 20% item 3 of 20% item 4 of 20% item 7 of 20% item 2 of 20% item . . . 1 of 20% item 2 of 20% item 3 of 20% item 4 of 20% item 5 of 20% item 7 of 20% item . . . 我想用这样自然

我有一个Firebird2.1表,它存储了一个自定义项——一个名为“detacts”的varchar35列,它是这样的:

1 of 20% item
5 of 20% item
3 of 20% item
4 of 20% item
7 of 20% item
2 of 20% item
.
.
.
1 of 20% item
2 of 20% item
3 of 20% item
4 of 20% item
5 of 20% item
7 of 20% item
.
.
.
我想用这样自然的方式对它们进行分类:

1 of 20% item
5 of 20% item
3 of 20% item
4 of 20% item
7 of 20% item
2 of 20% item
.
.
.
1 of 20% item
2 of 20% item
3 of 20% item
4 of 20% item
5 of 20% item
7 of 20% item
.
.
.
我已经执行了许多sql命令,如:

select * from TABLE order by 1
select * from TABLE order by PARTICULARS asc nulls last
select * from TABLE order by '00000000000000000000000000000000000'+trim(PARTICULARS)(35)
select * cast(PARTICULARS as varchar(35)) from TABLE order by 1
但我还是得到了上面那张桌子。我是一个vb.net程序员,从我开始做这个东西已经有几天了。有人能帮我吗。先谢谢你

mikeCoolGuy

从表_中选择*名称顺序按铸造详情作为int asc

您应该键入cast varchar to int或float to sort


希望这对您有好处。

我这样做了,但由于我的记录不完全是整数,所以出现了错误我相信我必须使用某种类型的“trim命令sql”来解决这个问题,我只是不知道如何解决。@user2272747:试试这个:从表中选择详细信息\u name order by case is numericDetails when 1,然后复制'0',100-Len35+详细信息其他详细信息endHey感谢您提供的信息,但正如我刚才所说的,我使用Firebird2.1作为我的数据库,“复制”在Firebird上不起作用,因为我已经搜索过了,所以有什么想法吗?这在Firebird上不起作用,在大多数数据库上也不起作用,在转换方面对SQL标准有更严格的解释数据类型的,我希望由的订单来处理这个问题。你的问题的内容是你正在使用的真正的价值观吗?我刚刚测试了它,ORDER BY应该在这里正常工作。表的DDL是什么,包括字符集和列的排序规则?在第一列上使用的ORDER BY 1表示排序,如果执行SELECT*,则实际上是第一列,否则只需按细节进行显式排序。