SQL 字符串按大小排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 字符串按大小排序相关的知识,希望对你有一定的参考价值。

如图:数据库字段A有这样的数据(排序前),求SQL更改
语句得到(排序后)的数据。

参考技术A 我的数据库和Myeclipse刚刚卸载了,所以没法帮你写!!!你自己想想吧,在数据库中直接排序成这样我还没有想到!这是将这个数据读出来在排序的方法。
这个需要先将A字段的字符拆分出来,可以按照“/”拆分,貌似可以直接用split("/')直接拆分,然后需要类型转换下,转成int类型,或者直接用int [] 来接收,既然已经拆分到数组里了,那么就可以用冒泡排序或者其他排序,从小到大排序了,排序之后需要在合并到一起!!!这只是一个思路或许还有其他方法。我说的可能有错误,希望见谅。
参考技术B --将A列按'/'拆分并转换为INT排序
SELECT T1.ID,CAST(T2.A AS INT) A
INTO #TEMP
FROM
(SELECT ID,A=CONVERT(XML,' <ROOT> <V>'+REPLACE(A,'/',' </V> <V>')+' </V> </ROOT>')
FROM #T T
)T1
OUTER APPLY (SELECT A=C.V.value('.','NVARCHAR(100)') FROM T1.A.nodes('/ROOT/V')C(V) )T2
ORDER BY A ASC
--以ID分组将A列拼接
SELECT ID , A=STUFF((SELECT '/'+ CONVERT(VARCHAR,A) FROM #TEMP T WHERE ID=#TEMP.ID FOR XML PATH('')), 1, 1, '')
FROM #TEMP
GROUP BY ID追问

没看懂这句SELECT A=C.V.value('.','NVARCHAR(100)') FROM T1.A.nodes('/ROOT/V')C(V)
T1.A.nodes----nodes是什么?有什么作用

追答

关于nodes可以参考这里:
http://msdn.microsoft.com/zh-cn/library/ms188282(v=sql.120).aspx

本回答被提问者和网友采纳
参考技术C 先转化成int再asc排序

以上是关于SQL 字符串按大小排序的主要内容,如果未能解决你的问题,请参考以下文章

Mysql之 order by 排序

怎么让SQLServer的id按照数字大小顺序排序?

JavaScript数字数组怎么按数字大小排序?

oracle,如何添加排序编号字段

C语言问题:将一字符串按ASCII大小排序

SQL 查询:按字符长度排序?