如何使用Delphi对GUID的SQL Server方式进行排序

ska*_*adt 4 sql-server delphi sorting guid

在我正在研究的项目中,如果我可以对guid的内存列表进行排序并与这些相同guid命令的SQL服务器表进行比较,那将是很好的.不幸的是,当SQL Server返回有序列表时,订单不会立即显现.

在内存列表中对此进行排序的最佳方法是什么,以便顺序与SQL Server返回的顺序相同?

例如,查询" SELECT ID FROM TABLE1 ORDER BY ID"返回:

A46030EC-BF3A-4F7C-88CC-00117DBC1A52
159A0A9D-18B7-4D6C-ABB3-005FAB666D91
3C58CFC5-1829-481C-9686-007CE71132B8
15A96D5F-DAFB-4EF1-9202-00B201CE5151
BCFDE733-0AB0-483F-B912-00BF93F6FA7E
6CC06558-7670-4879-9D3F-00CB3D3649BD
Run Code Online (Sandbox Code Playgroud)

为了这个问题,我假设我有一个包含上面guid值的字符串数组,但是按照以下顺序:

159A0A9D-18B7-4D6C-ABB3-005FAB666D91
15A96D5F-DAFB-4EF1-9202-00B201CE5151
6CC06558-7670-4879-9D3F-00CB3D3649BD
8A9325AF-A84E-4BDB-AFA8-C9D09D7FC064
A46030EC-BF3A-4F7C-88CC-00117DBC1A52
BCFDE733-0AB0-483F-B912-00BF93F6FA7E
Run Code Online (Sandbox Code Playgroud)

我想看到我在SQL查询中缺少一个,并且有一个SQL查询没有的查询.最快的方法显然是将两个列表以相同的方式排序,但我不想执行诸如" SELECT ID FROM TABLE1 ORDER BY cast(ID as varchar(100))"之类的查询,而是希望在Delphi端修复排序.

Axe*_*ger 8

Alberto Ferrari撰写了一篇关于它的博客文章.从那里:

0 1 2 3  4 5  6 7  8 9  A B C D E F
00000000-0000-0000-0000-010000000000
Run Code Online (Sandbox Code Playgroud)
  • 0..3按从左到右的顺序进行评估,然后不那么重要
  • 然后,按从左到右的顺序评估4..5
  • 然后,按从左到右的顺序评估6..7
  • 然后,按从右到左的顺序评估8..9
  • A..F按从右到左的顺序进行评估,是最重要的