当前位置: 代码迷 >> Sql Server >> 字段含数字,字符排序有关问题
  详细解决方案

字段含数字,字符排序有关问题

热度:53   发布时间:2016-04-24 09:48:10.0
字段含数字,字符排序问题
字段 room 中含有数字,字符 。默认排序如下:

12-13室
6室
抽血处
低频B超:14-19室
高频B超:8-9室

想将顺序调整为:
6室
高频B超:8-9室
12-13室
低频B超:14-19室
抽血处

请问该怎么实现?(就是先将有数字的按数字顺序排序,再排没有数字的)
------解决思路----------------------
可以用函数处理~~
你参考下,需要新建下函数
CREATE FUNCTION dbo.NumberInStrSortIndex
(@INPUT VARCHAR(MAX))
RETURNS INT
AS
BEGIN
DECLARE @INTSTR VARCHAR(10)
SET @INTSTR=''
DECLARE @INDEX INT,@NEXT INT
SET @INDEX=PATINDEX('%[0-9]%',@INPUT)
WHILE @INDEX>0
BEGIN
SET @INTSTR=@INTSTR+SUBSTRING(@INPUT,@INDEX,1)
SET @INPUT=RIGHT(@INPUT,LEN(@INPUT)-@INDEX)
SET @INDEX=PATINDEX('%[0-9]%',@INPUT)
IF @INDEX>1
BREAK
END
IF @INTSTR=''
RETURN 2147483647
RETURN CAST(@INTSTR AS INT)
END

然后就可以排序了
SELECT * FROM TB ORDER BY dbo.NumberInStrSortIndex(room),room
  相关解决方案