请教一个排序问题,请各位高手作答。(50分)

  • 主题发起人 主题发起人 hzyang2003
  • 开始时间 开始时间
H

hzyang2003

Unregistered / Unconfirmed
GUEST, unregistred user!
我用interbase作为数据库,其中有一字段DY为字符型,数值如下
1
3
2
12
21
用select * from aa order by dy,查询结果如下:
1
12
2
21
3
而我所需要的如果如下(转换为数值情况):
1
2
3
12
31
如果是oracle数据库,直接用函数能实现,select * from aa order by to_char(dy);
但是interbase排序好象不支持函数,如下语句出错:select * from aa order by cast(dy as numeric)
我现在不想将查询如果倒入别一个数据库中排序,请问如何直接用select语句能实现此功能,急急急!!!!

 
为什么没人作答,高手到哪儿去了
 
select * from aa order by val(dy)
 
select aa.*,cast(dy as integer) as tmp from aa order by tmp
 
运行quicksilver的语句,出现dynamic SQL ERROR
SQL ERROR CODE=-206
COLUMN UNKNOWN TEMP
运行hunterteam的语名,出现dynamic SQL ERROR
SQL ERROR CODE=-104
 
那你就把数据类型转变为integer
 
你用的是什么数据库,不同的数据库将字符串转换为数值型的函数是不同的,我的是
Access数据库,你应该查一查相关的资料,然后将我的那个VAL函数改为相应的函数即可。
 
QuickSilver老兄说的没错,我就是这样用的!
 
我用的是interbase数据库,查询用的是ibquery控件,interbase转换类型函数为cast,如果将其用于选择条件则没有错,
如select * from aa where cast(dy as numeric)>1则没错,如果作为单独的一列,则出错。是不是interbase不支持函数为列,
oracle数据库是绝对没有问题,请各位高手作答,急急急,分数不够还可以再加。
 
高手难觅,都到那儿去了,为什么我的问题没有人能解答
 
select * from aa order by Convert(numeric(10,0),dy) as AA
具体你可以看看你数据库支持什么函数。
如你说的函数
select * from aa order by cast(dy as numeric) as AA
这样试试。
 
glbboy说的还是不行,提示dynamic SQL ERROR
SQL ERROR CODE=-104
请高手指教
 
怎么没有人回答,是不是没有interbase方面的高手
 
高手难觅,知道interbase的人是否不多,要不怎么没有人回答
 
后退
顶部