字段 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