按包含数字和字母的字段排序



我需要从Delphi XE2下的现有Padadoc数据库中提取数据(是的,我将它们划分了10多年......

我需要根据包含以下值的字段(示例中的 ID)对结果进行排序:"1"、"2 A"、"100"、"1 B"、"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

我怎么能用悖论实现这样的排序...?

试试这个:

SELECT id, CAST('0' + id AS INTEGER) A 
FROM "my.db" 
ORDER BY A, id

这些想法浮现在脑海中:

  1. 在 Delphi 中创建一个执行排序客户端的排序函数,使用比较/映射函数将字符串重新排列为可比较的内容,可能是按字典顺序。

  2. 向要对其数据进行排序的表中添加一列,其中包含可与标准字符串比较进行比较的值的修改,因此将与 ORDER BY 一起使用

  3. 将一个存储函数添加到 paradox 中,用于修改值,并在 ORDER BY 子句中使用此函数。

通过修改,我的意思是将字符串分成组件,然后用右边填充的组件重新连接它们,以便所有组件都位于字符串中的相同位置。 只有当您可以自信地说,对于每个组件,数据库中的任何值都不会超过特定长度时,这才会可靠地工作。

我提出这些建议很少/对悖论或德尔菲一无所知,所以你将不得不对我的建议持保留态度。

相关内容

  • 没有找到相关文章

最新更新