SQL如何实现自定义排序规则
2007-05-27 16:32
387 查看
--现有医院行政级别数据,需要由低(一乙)到高(三甲)排序
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
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
相关文章推荐
- SQL如何实现自定义排序规则?
- 如何运用PHP函数usort()实现自定义排序
- sql中实现自定义排序
- 如何运用PHP函数usort()实现自定义排序
- BIEE11G实现自定义列排序规则
- 如何实现自定义类对象数组的排序
- ---------SQL 2005如何更改排序规则---------------
- sql查询做的报表实现自定义过滤和排序
- NHibernate 如何实现使用sql自定义的函数
- java编程排序之内置引用类型的排序规则实现,和自定义规则实现+冒泡排序运用
- SQL实现自定义排序
- SQL行号排序和分页(SQL查询中插入行号 自定义分页的另类实现)
- 如何实现自定义类对象数组的排序
- LINQ : 如何为LINQ TO SQL实现自定义业务逻辑
- SQL行号排序和分页(SQL查询中插入行号 自定义分页的另类实现)
- 在SQL和ERWIN中用自定义类型、规则和默认值实现check约束从而保证数据的完整性
- Sybase SQL 通过order by 自定义排序规则
- JAVA类中如何利用Comparator实现自定义排序
- LINQ : 如何为LINQ TO SQL实现自定义业务逻辑
- 在SQL和ERWIN中用自定义类型、规则和默认值实现check约束从而保证数据的完整性