oracle 8汉字、字母混合排序


有时候通讯录,或者名字排名需要按照字母来分块,如下:
[code linenum=”off” download=”test.txt”]
J 计划财务部 经理办公室 境外人士服务中心
L 留学中心
M 门诊部
P 培训中心
Q 其它
[/code]
解决方案

增加了一个表,内容如下:
[code linenum=”off” download=”pinyin.txt”]
a 啊 f
b 芭 f
c 擦 f
d 搭 f
e 蛾 f
f 发 f
g 噶 f
h 哈 f
i f
j 击 f
k 喀 f
l 垃 f
m 妈 f
n 嗯 f
o 哦 f
p 啪 f
q 期 f
r 然 f
s 撒 f
t 塌 f
u f
v f
w 挖 f
x 昔 f
y 压 f
z 匝 f
[/code]

上述表的作用主要是和参与整个内容的排序,如果发现这个表里的数据,那么就做相应的处理。
i,u,v为空是因为没有汉字是这些拼音开始的。sql如下

[code lang=”sql” linenum=”off”]select *
from (select *
from (select b.dept_id, b.name, count(*) c
from test.t_oper_info a, test.t_dept_info b
where a.dept_id = b.dept_id
group by b.dept_id, b.name
having count(*) > 0
order by b.name)
union
select upper(pinyin) dept_id, hz name, 0 c from test.t_pinyinorder) a
where a.name is not null
order by a.name[/code]


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注