【问题标题】:SORTING '1 of 20% item' Firebird2.1 SQLSORTING '1 of 20% item' Firebird2.1 SQL
【发布时间】:2013-04-04 10:53:00
【问题描述】:

我有一个存储自定义项目的 Firebird2.1 表 - 一个名为 'PARTICLARS' 的 varchar(35) 列,它是这样的:

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 程序员,自从我开始工作以来已经有几天了。有人会帮助我吗。提前谢谢你。

迈克酷哥!

【问题讨论】:

  • 我本来希望ORDER BY 来处理这个问题。您的问题内容是您所使用的真正价值观吗?
  • 我刚刚测试过,ORDER BY 在这里应该可以正常工作。表的DDL是什么,包括列的字符集和排序规则?
  • 您使用的ORDER BY 1 表示在第一列上排序,如果您执行SELECT *,则PARTICULARS 实际上是第一列,否则只需输入明确的ORDER BY PARTICULARS。跨度>

标签: sql vb.net firebird2.1


【解决方案1】:

select * from table_name order by cast (PARTICLARS as int) asc

你应该输入 cast varchar to int 或 float 来排序。.

希望它对你有好处。

【讨论】:

  • 我这样做了,但由于我的记录不完全是整数,我得到了错误
  • 我相信我必须使用某种“trim command sql”来解决这个问题,我只是不知道如何..
  • @user2272747:试试这个:从 table_name 按大小写顺序选择 PARTICULARS IsNumeric(PARTICULARS) when 1 then Replicate('0', 100 - Len(35)) + PARTICULARS else PARTICULARS end
  • 嘿,感谢您提供的信息,但正如我前段时间所说 - 我使用 Firebird2.1 作为我的数据库,并且“复制”在 Firebird 上不起作用(据我搜索forums.devshed.com/firebird-sql-development-61/…) 有什么想法吗??
  • 这不适用于 Firebird(也不适用于大多数对数据类型转换的 SQL 标准有更严格解释的数据库)
猜你喜欢
  • 2022-12-01
  • 2022-12-27
  • 2019-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多