我需要从Delphi XE2下的现有Padadox数据库中提取数据(是的,我将它们分开了10年......)。
我需要根据包含以下值的字段(示例中的id)对结果进行排序:'1','2 a','100','1b','50 bis'...和得到这个:
- 1
- 1 b
- 2 a
- 50 bis
- 100
也许这样的事情可以做到,但那些关键字不存在:
SELECT id, TRIM(TRIM(ALPHA FROM id)) as generated, TRIM(TRIM(NUMBER FROM id)) as generatedbis, etc
FROM "my.db"
WHERE ...
ORDER BY generated, generatedbis
我怎么能用矛盾实现这样的排序......?
答案 0 :(得分:7)
试试这个:
SELECT id, CAST('0' + id AS INTEGER) A
FROM "my.db"
ORDER BY A, id
答案 1 :(得分:1)
这些想法浮现在脑海中:
在delphi中创建一个排序函数,它使用比较/映射函数对客户端进行排序,该函数将字符串重新排列为可比较的字符串,也许是以字典方式。
在要对其数据进行排序的表中添加一列,其中包含可以与标准字符串比较进行比较的值的修改,因此可以使用ORDER BY
将存储函数添加到修改值的paradox中,并在ORDER BY子句中使用此函数。
通过修改,我的意思是,将字符串分成组件,并重新连接它们与每个组件右边填充足够的空格,以便所有组件在字符串中的相同位置。只有当您可以放心地对每个组件说,数据库中的任何值都不会超过一定长度时,这才能可靠地工作。
我提出这些建议很少/不知道悖论或德尔福,所以你必须带着我的建议。