Delphi 德尔菲表排序
我有一个让他们头疼的简单问题 我需要按照以下顺序对数据库表TDBGrid(组件ace中的ABS数据库)中的整数进行排序Delphi 德尔菲表排序,delphi,sorting,Delphi,Sorting,我有一个让他们头疼的简单问题 我需要按照以下顺序对数据库表TDBGrid(组件ace中的ABS数据库)中的整数进行排序 0 一, 十一, 111 121 二, 二十一, 211 二十二 221 等等 这意味着每个以1开头的数字都应该小于1 一, 十一, 111 五, 五十五 有人能帮我吗 谢谢我刚刚在SQL Server Management Studio中运行了此操作-注意,我将输入中的行弄混了,因此它们没有按顺序排列: create table #temp( ID Char(3));
- 0
- 一,
- 十一,
- 111
- 121
- 二,
- 二十一,
- 211
- 二十二
- 221
- 一,
- 十一,
- 111
- 五,
- 五十五
谢谢我刚刚在SQL Server Management Studio中运行了此操作-注意,我将输入中的行弄混了,因此它们没有按顺序排列:
create table #temp( ID Char(3));
insert into #temp (ID)
select '111' union
select '221';
select '0' union
select '21' union
select '1' union
select '11' union
select '211' union
select '121' union
select '2' union
select '22' union
select * from #temp order by ID;
我得到了以下输出:
ID
----
0
1
11
111
121
2
21
211
22
221
(10 row(s) affected)
如果你得到了不同的结果,你就做错了。但是,很难说是什么,因为您没有发布任何关于如何从数据库检索数据的信息
编辑:海报中的一些说明表明显示器位于
TDBGrid
中,并使用组件Ace ABS数据库
附在表格上。如果确实是这样,那么答案是在指定的列上创建一个索引,然后设置表的IndexName
属性以使用该索引。这应该可以按正确的顺序获取内容:
select RPAD(orderid,3,'0') as TheOrder
from MyTable
order by 1
选择cast(INT_字段为varchar(9))作为I
来自TABxxx
按1排序
如果它们是整数,如何区别01和1?你的意思可能是弦?如果它们是字符串,正常的排序应该有效。使用字符串而不是整数!正常排序不起作用,原因很简单22小于0111我想使用字符串,但我有一些条件集,只能应用于整数。我不太明白0111和111之间的区别,如果它们是整数?这是一个组件,默认情况下会对它们进行排序,正如我所说,该数据库是component ace的ABS,它是一个文件驱动的数据库。TDBGrid
默认情况下不会对任何内容进行排序。要做到这一点,您必须在表上放置一个索引,然后使用该索引顺序,或者在SQL中添加一个order by
need@Sertac,海报使用TDBGrid
附在组件Ace ABS
的表格上。我觉得我们在试图从海报上获取信息——对原始问题有15条评论,直到我发布了一个答案,我们才发现这是一个TDBGrid
,现在我的答案有5条评论(其中6条)@user-我的建议是启动一个新项目,只需几行代码和一个从头开始的表,这将复制问题,并联系ace支持。正如您从这个答案和问题的注释中所发现的,字符串排序应该给出您想要的结果。