SQL如何实现自定义排序规则?

--现有医院行政级别数据,需要由低(一乙)到高(三甲)排序
CREATE TABLE #TEMP(NAME NVARCHAR(32))
INSERT INTO #TEMP(NAME) VALUES('三甲')
INSERT INTO #TEMP(NAME) VALUES('一乙')
INSERT INTO #TEMP(NAME) VALUES('二甲')
INSERT INTO #TEMP(NAME) VALUES('三乙')
INSERT INTO #TEMP(NAME) VALUES('一甲')
INSERT INTO #TEMP(NAME) VALUES('二乙')

--CHARINDEX:返回字符串中指定表达式的起始位置
SELECT * FROM #TEMP
ORDER BY CHARINDEX(SUBSTRING(NAME,2,1),'乙甲'),
CHARINDEX(SUBSTRING(NAME,1,1),'一二三四五六七八九十')

--CHARINDEX 和 PATINDEX 函数都返回指定模式的开始位置。PATINDEX 可使用通配符,而 CHARINDEX 不可以。
SELECT * FROM #TEMP
ORDER BY PATINDEX('%'+SUBSTRING(NAME,2,1)+'%','乙甲'),
PATINDEX('%'+SUBSTRING(NAME,1,1)+'%','一二三四五六七八九十')


DROP TABLE #TEMP
posted @ 2007-01-11 09:58  云水浮萍  阅读(1527)  评论(0编辑  收藏  举报