FireDAC Left Join TDBGrid Assending Sort Order of columns with no joined data are at the bottom?

问题描述 投票:0回答:1

我在

LEFT JOIN
中使用的两个表之间设置了一个
TDBGrid
,除了连接字符串列的排序顺序不符合预期外,它都可以正常工作。按升序排列,空白条目(那些在连接表中没有匹配项)位于带有文本的项目下方。同样,如果您按降序排序,它们会显示在顶部而不是底部。似乎 blank 条目应该在该列上按升序排序时首先列出?如果不是,原因是什么,有没有办法让它按预期排序?

TIA!!

delphi c++builder firedac
1个回答
0
投票

这就是您的 SQL 引擎返回该数据的方式。请记住,空值被视为未填充状态而不是真实值。

根据您的 SQL 引擎,您可以将 NULLS FIRST 或 NULLS LAST 添加到您的

ORDER BY
子句中。例子:

ORDER BY LastName ASC NULLS FIRST

但是在其他 SQL 引擎上,例如 SQL Server,它无法识别该子句,因此您必须编写一个变通方法,例如将空值转换为空字符串,这将正常排序。

ORDER BY coalesce(LastName, '') ASC 
© www.soinside.com 2019 - 2024. All rights reserved.