高分求教,如何实现对机关发文的文件编号的正确排序?

javaboat 2006-03-10 08:10:41
假设SQL2000数据库中,有一表(doc),有一文本字段(列:markid),里面有下列数据,如何sql查询才能实现我想要的排序


外办发[2005]1号 外办发[2005]2号 外办发[2005]123号 外办发[2005]33号 外办发[2005]6号
外办发[2005]12号 外办发[2005]]50号

用怎么样的SQL语句(SQL200)才能实现这样的排序

外办发[2005]1号
外办发[2005]2号
外办发[2005]6号
外办发[2005]12号
外办发[2005]33号
外办发[2005]50号
外办发[2005]123号

select * from doc order by markid 这样肯定是不对的?请各位高手帮忙!
...全文
297 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
javaboat 2006-03-10
  • 打赏
  • 举报
回复
不好意思,我发得急了一些,
刚想修改一下,如果有下面的这些数据,不仅只有外办发

外办发[2005]1号 外办发[2005]2号 外办发[2005]123号 外办发[2005]33号 外办发[2005]6号
外办发[2005]12号 外办发[2005]]50号,外公明发[2005]3号,外公明发[2005]124号,外公明发[2005]23号,外传发[2005]5号,外传发[2005]22号,外传发[2005]125号,...

如何实现下面的正确排序
外办发[2005]1号
外办发[2005]2号
外办发[2005]6号
外办发[2005]12号
外办发[2005]33号
外办发[2005]50号
外办发[2005]123号
外传发[2005]5号
外传发[2005]22号
外传发[2005]125号
外公明发[2005]3号
外公明发[2005]23号
外公明发[2005]125号

麻烦各位朋友再帮一下忙..
谢谢..
ReViSion 2006-03-10
  • 打赏
  • 举报
回复
Create table #1(markid varchar(50))

insert #1
select '外办发[2005]1号'
union all select
'外办发[2005]2号'
union all select
'外办发[2005]6号'
union all select
'外办发[2005]12号'
union all select
'外办发[2005]33号'
union all select
'外办发[2005]50号'
union all select
'外办发[2005]123号'

select * from #1
order by left(markid,charindex(']',markid)),cast(left(substring(markid,charindex(']',markid)+1,10),patindex('%[^0-9]%',substring(markid,10,10))-1) as int)
ReViSion 2006-03-10
  • 打赏
  • 举报
回复
--下面这个更通用
select * from #1
order by left(markid,charindex(']',markid)),cast(left(substring(markid,10,10),patindex('%[^0-9]%',substring(markid,10,10))-1) as int)
lsqkeke 2006-03-10
  • 打赏
  • 举报
回复
declare @t table (markid varchar(50))

insert @t
select '外办发[2005]1号'
union all select
'外办发[2005]2号'
union all select
'外办发[2005]6号'
union all select
'外办发[2005]12号'
union all select
'外办发[2005]33号'
union all select
'外办发[2005]50号'
union all select
'外办发[2005]123号'

select * from @t
order by cast(left(right(markid,len(markid)-9),len(right(markid,len(markid)-9))-1) as int)

外办发[2005]1号
外办发[2005]2号
外办发[2005]6号
外办发[2005]12号
外办发[2005]33号
外办发[2005]50号
外办发[2005]123号
lsqkeke 2006-03-10
  • 打赏
  • 举报
回复
select * from doc
order by cast(left(right(markid,len(markid)-9),len(right(markid,len(markid)-9))-1) as int)
ReViSion 2006-03-10
  • 打赏
  • 举报
回复


Create table #1(markid varchar(50))

insert #1
select '外办发[2005]1号'
union all select
'外办发[2005]2号'
union all select
'外办发[2005]6号'
union all select
'外办发[2005]12号'
union all select
'外办发[2005]33号'
union all select
'外办发[2005]50号'
union all select
'外办发[2005]123号'

select * from #1
order by left(markid,9),cast(left(substring(markid,10,10),patindex('%[^0-9]%',substring(markid,10,10))-1) as int)
内容概要:本文围绕【语音增强】领域中的组稀疏信号去噪问题展开研究,提出了一种结合非凸正则化与凸优化理论的去噪方法,旨在提升含噪语音信号的可懂度与质量。文章系统阐述了组稀疏信号模型的构建机制,引入非凸正则项以更精确地逼近理想稀疏性,克服传统凸正则化在稀疏表达上的局限性,并采用高效的凸优化算法保障模型求解的稳定性与收敛性。整个算法流程在Matlab平台上完整实现,涵盖语音信号预处理、稀疏系数求解、去噪重构等关键环节,并配套提供可复现的代码资源,便于研究人员进一步验证与拓展。该方法在保留数学可处理性的同时显著增强了去噪性能,尤其适用于低信噪比环境下的语音恢复任务。; 适合人群:具备一定信号与系统、数字信号处理理论基础,熟悉稀疏表示与最优化方法,且拥有Matlab编程能力的研究生、科研人员及从事语音增强、音频工程、通信系统等相关领域的工程技术人员。; 使用场景及目标:①应用于语音通信、智能助听设备、语音识别前端等对语音质量要求较高的实际系统中;②作为高校课程或科研项目中的教学案例,帮助深入理解稀疏表示、非凸优化与凸优化算法的融合机制;③为后续研究非凸正则化在图像去噪、生物医学信号处理等其他稀疏恢复问题中的性能优势提供理论依据与实现范例。; 阅读建议:建议读者结合所提供的Matlab代码逐模块分析,重点理解非凸正则项的设计动机及其对稀疏性的增强作用,深入掌握优化求解过程中迭代算法的实现细节;同时可通过调整正则化参数、测试不同噪声类型(如白噪声、车间噪声)与强度的语音信号,系统评估算法的鲁棒性、收敛速度与去噪效果,从而全面把握该方法的优势与潜在局限。

22,296

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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