关于GUID排序问题,望高人回答!

jerry01 2008-09-18 05:11:15
在数据库中执行SQL并对GUID列升序排序,结果为:
FA22DA92-DA37-46B6-99EA-09BDCDFCDBB3
E23CADA8-542C-4D83-865D-FA279BDA904F
而在C#中,用DataTable.DefaultView.Sort排序时得到的结果如下:
E23CADA8-542C-4D83-865D-FA279BDA904F
FA22DA92-DA37-46B6-99EA-09BDCDFCDBB3
二种排序结果正好相反,不解其意,望高手回答。
注:DataTable中的列类型为GUID,和数据库列数据类型相同!
...全文
675 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyde100 2008-09-19
  • 打赏
  • 举报
回复

declare @guid1 uniqueidentifier
declare @guid2 uniqueidentifier

set @guid1 = 'FA22DA92-DA37-46B6-99EA-09BDCDFCDBB3'
set @guid2 = 'E23CADA8-542C-4D83-865D-FA279BDA904F'


select @guid1 id union
select @guid2
order by id

结果:
FA22DA92-DA37-46B6-99EA-09BDCDFCDBB3
E23CADA8-542C-4D83-865D-FA279BDA904F

-------------------------------------------------
select @guid1 id union
select @guid2
order by id desc

结果:
E23CADA8-542C-4D83-865D-FA279BDA904F
FA22DA92-DA37-46B6-99EA-09BDCDFCDBB3
hyde100 2008-09-19
  • 打赏
  • 举报
回复
所以,guid类型来排序没有什么实际的意思,毕竟它是随机的。
hyde100 2008-09-19
  • 打赏
  • 举报
回复
在数据库中,我们用的guid是16字节,它的存储方式是二进制。
我们看到的只是它的字符串格式,例如
字符串格式: '6F9619FF-8B86-D011-B42D-00C04FC964FF'
---------------------------------------------------
而实际上它的存储格式为二进制,例如:
二进制格式: 0xff19966f868b11d0b42d00c04fc964ff
这样我们在sql中排序的时候其实是按二进制格式来排序的,而不是字符串格式。
这样我们在C#中是按字符串格式排序的。

以上,就出现了楼主那样的结果
jerry01 2008-09-19
  • 打赏
  • 举报
回复
比较奇怪的是C#中DataView中的列是GUID类型的列,排序时也应该按照十六进制进行排序,而不是按照字符串排序,看来可能是.net的BUG,感谢大家的回答!
jerry01 2008-09-18
  • 打赏
  • 举报
回复
order by没有问题,dawugui你用的是字符串,我的数据类型为GUID(uniqueidentifier)
等不到来世 2008-09-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dawugui 的回复:]
不会吧?
[/Quote]
order by 估计写得有点问题吧
hanzixuan 2008-09-18
  • 打赏
  • 举报
回复
.......
dawugui 2008-09-18
  • 打赏
  • 举报
回复
select 'FA22DA92-DA37-46B6-99EA-09BDCDFCDBB3' id union
select 'E23CADA8-542C-4D83-865D-FA279BDA904F'
order by id
/*
id
------------------------------------
E23CADA8-542C-4D83-865D-FA279BDA904F
FA22DA92-DA37-46B6-99EA-09BDCDFCDBB3

(所影响的行数为 2 行)
*/

select 'FA22DA92-DA37-46B6-99EA-09BDCDFCDBB3' id union
select 'E23CADA8-542C-4D83-865D-FA279BDA904F'
order by id desc

/*
id
------------------------------------
FA22DA92-DA37-46B6-99EA-09BDCDFCDBB3
E23CADA8-542C-4D83-865D-FA279BDA904F
(所影响的行数为 2 行)
*/
dawugui 2008-09-18
  • 打赏
  • 举报
回复
不会吧?
内容概要:本文围绕内置式永磁同步电机(IPMSM)的宽速域控制问题,提出了一种最大转矩电流比(MTPA)与基于解析法的弱磁控制协同策略,旨在实现电机在全速域范围内的高效、稳定运行。研究基于电压饱和判据,设计了精确的分区切换机制,确保在不同转速区间内MTPA与弱磁控制策略的无缝衔接与平滑过渡。通过Simulink搭建了完整的电机控制系统模型,对所提出的协同控制策略进行了详细的仿真验证,重点分析了其在动态加速、减速及负载突变等工况下的宽速域动态特性,证明了该方法在提升系统响应速度、抑制转矩脉动和维持电压稳定方面的优越性能。; 适合人群:从事电机控制、电力电子、新能源汽车或自动化领域的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握永磁同步电机在全速域范围内的先进控制策略;② 学习如何设计基于物理约束(如电压饱和)的多模式控制切换逻辑;③ 利用Simulink进行电机控制系统的建模、仿真与性能验证; 其他说明:该资源不仅提供了完整的理论分析和控制框图,还包含了可直接运行的Simulink仿真模型,便于读者复现结果、修改参数并进行二次开发,是深入理解电机高性能控制算法的理想实践材料。
内容概要:本研究聚焦于永磁同步电机(PMSM)在无位置传感器控制下的启动性能优化,提出了一种将模型预测控制(MPC)与模型参考自适应系统(MRAS)相融合的观测器设计方案。该融合观测器充分利用MPC的多步前瞻预测能力和MRAS的强鲁棒性,构建协同机制,旨在解决电机在零速和极低速工况下因反电动势微弱而导致的传统观测器收敛困难、稳定性差的问题。研究通过Simulink仿真实验,深入分析了融合观测器的动态响应特性、收敛速度及其在零速启动过程中的稳定性,验证了该方案相较于单一观测器在提升系统收敛性和平滑启动方面的优越性。; 适合人群:具备电机控制理论基础和Simulink仿真经验,从事电机驱动、电力电子或自动化领域研发工作的工程师及研究生。; 使用场景及目标:① 解决永磁同步电机在零低速区的精确转子位置观测难题;② 设计并验证融合型观测器以提升系统在启动阶段的动态性能和鲁棒性;③ 为高性能无传感器驱动系统的设计提供仿真依据和技术参考。; 阅读建议:此资源以Simulink仿真实现为核心,读者应在理解MPC和MRAS基本原理的基础上,重点学习其融合架构的设计思路与协同机制的实现方法,并通过动手复现仿真模型来深入掌握观测器的参数整定、性能评估与优化技巧。

34,876

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧