求助以下sql问题,应用到了字符串函数和排序问题,需要直接输出的语句,着急在线等,谢谢
2个回答
展开全部
这个问题的正确做法是用约束规范该字段的值为固定的格式的文本。即固定长度、固定分隔符、固定各个分段的长度、固定只使用数字的等,例如 固定格式 00-000-00 格式固定后排序就很简单了。否则要对该字段排序就会很麻烦,即使实现效率也会很差,因为输入的字段值可能不规范其可靠性成疑。
下面是使用字符串函数,根据分隔符减号的位置算出各段数字的大小的排序实现方案,供参考
(这里假设分隔符都是‘-’,其它均为0-9的数字且国定有3段长度各不固定数字)
select * from paixu order by
Cast(Left(code,Charindex('-',code)-1) as int),
Cast(Substring(code,Charindex('-',code)+1,Charindex('-',code,Charindex('-',code)+1)-1-Charindex('-',code)) as int),
Cast(Substring(code,Charindex('-',code,Charindex('-',code)+1)+1,100) as int);
由上述代码可见排序表达式相当复杂,尽管可实现排序但是效率肯定不高
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询