我正在使用连接到 TDataSource 的 TDBGrid。此 TDataSource 使用 TADOQuery 作为其数据集。TADOQuery 连接到 Oracle10g 数据库并保存以下查询:
SELECT ST.desc
FROM my.subsection ST
WHERE ST.date_disp = :dated
ORDER BY ST.desc
ST.desc 是一个字符串,通常包含如下数据:
'1st place'
'2nd place'
'A zone'
'Her zone'
'My zone'
'Zone'
一切正常,除了当我在 SQLTools 中运行查询时,它首先返回按LETTERS 排序的数据,然后返回 NUMBERS。例如:
'A zone'
'Her zone'
'My zone'
'Zone'
'1st place'
'2nd place'
但是当我运行应用程序时,结果首先是 NUMBERS,然后是 LETTERS!例如:
'1st place'
'2nd place'
'A zone'
'Her zone'
'My zone'
'Zone'
我发现 Oracle 使用一种排序语言(http://docs.oracle.com/cd/B19306_01/server.102/b14225/ch5lingsort.htm)和一些 Delphi 组件(TDBGrid 或 TDataSource?)另一种。
然后我尝试使查询的结果符合 Delphi 的组件顺序,即NUMBERS 然后 LETTERS。但这是不希望的,因为用户的自然顺序是LETTERS,然后是 NUMBERS。
有谁知道我如何确定哪个组件正在“重新排序”数据以及如何使两个排序顺序相同?