碰到一個排序的經驗性問題,希望大家各抒己見,來者有分!

时间:2021-12-11 16:03:49
唉,今天才發現,原來pb對中文的排序不是按 音序 來排的!

嗨,原來自己一直的在想當然,所以一直沒留心,直到今天才發覺到!

請問諸位:pb對 中文 到底是按什麼規則排序的?

注:從數據庫中檢索出來的數據是繁體字,但我想簡體應該也是這樣的吧,總之,我等下去試試,馬上將測試結果貼出來,大家不煩也幫我去試試,我估計應該是一樣的!

36 个解决方案

#1


刚试过用pb9.的确是按第一个汉字的声母排的,我看错了还是楼主看错了?

升级的话是 

数字
字母
汉字(声母是a)
...
...
...
汉字(声母是z)

#2


嗯..至少简体应该是按声母排序吧. 不过windows区域设置里面有个排序选项, 不知道有没有影响.

#3


我測試過了,對漢字是按聲母排序的,樓主是不是搞錯了

#4


執行的sql如下:

select distinct(user_code),user_name 
from userlist u,sample_main s
where u.user_code = s.operate_name
order by user_name asc;
--------------------------
result如下:(大家看看,我是否看錯!那就是繁體的原因了,以前一直沒用繁體,所以沒發現該問題,不知道有誰知道,繁體是按什麼排序)

user_code  user_name

mengxh  孟曉紅
mrp2 MRPII
christine christine
era era
gaohui gaohui
ghy ghy
jasmine jasmine
joeychan joey
laura laura
lecqw lecqw
tch tch
welson welson
dan 于丹丹
yzm 于志民
caixiaf 丰彩霞
shirleyyin 尹麗平
xixi 孔思如
wenny 方惠芳
brian 王小菲
wp 王平
mickey 王秀 鵬
anson 王俊
wjming 王界明
rocs 司向輝
may 甘燕梅
bbing 白冰
junny 伍秋慧
meibao 伍美寶
tequila 朱晶峰
amg 朱雯艷
amy 朱雯艷
zfl 朱鳳蓮
sara 余潤鳳
rainbow 吳紅虹
winnie 呂淑琴
winning 呂淑琴
lzqw *青
libert 李亞猛
kathy 李春燕
teddyli 李秋蘭
ljc 李家彩
lie 李瑞娥
janeli 李霽
kingdom 汪英明
jeh 周宋
jbr 季邦榮
dick 林俊松
lkx 林康秀
qzq 邱志強
qqz 邱勤娟
qfbo 金花
coco 洪海容
kuotan 胡丹
aiai 胡玲愛
christ 胡英姿
hannahhou 候俊
alice_hou 候鵬智
alans 倪繼軍
colindon 唐睿麟
wendy 夏桂英
tn 孫蓉
harrysun 孫廣華
liling 孫禮玲
feng 徐求鳳
anterxu 徐常君
aimmexu 徐琴
adad 桂一枝
judyma 馬珊英
sunnygao 高中元
gq 高群
lynn 庾毅玲
ring 張世英
kali 張玉蓮
davidz 張俊
johnnyz 張科
kenzh 張堅成
sherry 張瑤
owen 張劍彬
zhangx 張霞
cindyzhang 張霞
susanz 張茜
keving 強國龍
sean 莊志平
xml 許美玲
anna 許鳳娜
gzw 郭志偉
stevenguo 郭智勇
cyz 陳玉珍
janetchen 陳金平
neilchan 陳述春
chengjuan 陳娟
w_chl 陳海林
wendyc 陳雪芸
sallych 陳新芬
steven 陳新華
nacy88 陶燕
jasonp 彭石根
warrenjing 景文朝
allan 曾月蘭
zxl 曾秀蓮
tobo 項小月
sunnyxiang 項前
fang 馮清芳
zoeh 黃金霞
hsq 黃淑清
jaryyang 楊登文
yxh 楊曉寒
wyh 溫遠紅
wanchaoxia 萬超霞
qiao 葉升橋
louie 董靖
nancydong 董蘇金
george 董顯平
zyh 鄒月華
zbf 鄒冰峰
ritac 廖志巧
lxx 廖香秀
zxlan 趙曉蘭
leonlau 劉玉
lewie 劉志
josephp 劉紹雄
liuc 劉潮
annaliu 劉曙輝
alexpan 潘正
sunlight 蔡華軍
fifi 談錦菲
rady 鄭火金
cindy 黎秀滿
uf 黎林芳
clear 錢立異
edmund 鮑全家
angelhan 韓雨
eva 韓海華
kelvinlaw 羅景華
tj 譚級
amyyan 嚴晶晶
sophia 蘇云淑
raoping 饒    萍
king 顧彬
sandyg 龔萍
lxf 宁佩芳
ydm 閆冬梅
martinqu 矍斌

#5


不是按声母来排序的,全是按ASCII码来排序的,按ASCII来排序的话,大部分汉字应该是声母,但多音字的那些就不一定了,呵呵

#6


sql语句结果的排序是按数据库系统的排序规则处理的。

#7


没听说过,我这里一切正常~

#8


字母,简体,繁体,乱码

#9


ss

#10


to  lzp_lrp(lzp):
我在這個結果裡面真的發現不出到底是按什麼排序的,按ASCII码也不全對!
mengxh  孟曉紅          真搞不懂這個姓孟的怎麼會排在第一!
mrp2 MRPII            它排列第二,看MRPII是大寫就算了
christine christine
era era
gaohui gaohui
ghy ghy
jasmine jasmine
joeychan joey
laura laura
lecqw lecqw
tch tch
welson welson      從MRPII到welson打止,這部分可以看成是按ASCII碼排序
dan 于丹丹      那後來簡直就沒任何規律,簡直就是亂七八糟的在排!
yzm 于志民
caixiaf 丰彩霞


......................
唉,搞馱不清!

#11


因为孟前面有个空格

#12


select distinct(user_code),trim(user_name )
from userlist u,sample_main s
where u.user_code = s.operate_name
order by trim(user_name) asc;

就可以了

#13


建议你整理数据
update xxx set name=trim(name)

#14


学习中…………

#15


先謝了 sun1976(关羽观雨),你說的很對,的確是空格問題,
我用的sybase數據庫,語法是這樣的,供大家參考:
select distinct(user_code),user_name
from userlist u,sample_main s
where u.user_code = s.operate_name
order by rtrim(ltrim(user_name));

查詢結果如下:(還是沒按音序來排)

user_code user_name

betty Betty
mrp2 MRPII
gaohui gaohui
laura laura
songhui songhui
tch tch
welson welson
maggie 丁明霞
dan 于丹丹
yzm 于志民
caixiaf 丰彩霞
shirleyyin 尹麗平
chou 仇圣榮
xixi 孔思如
wenny 方惠芳
brian 王小菲
todd 王友華
wp 王平
mickey 王秀 鵬
lisa 史蘭麗
bbing 白冰
junny 伍秋慧
meibao 伍美寶
kdm 匡冬梅
amg 朱雯艷
amy 朱雯艷
zfl 朱鳳蓮
hj 何   建
judy 何海亞
winning 呂淑琴
lzqw *青
teddyli 李秋蘭
ljc 李家彩
lie 李瑞娥
wqh 汪啟宏
jeh 周宋
mengxh  孟曉紅
lkx 林康秀
qqz 邱勤娟
qfbo 金花
aiai 胡玲愛
shirly 胡美芳
wendy 夏桂英
irenex 徐蕾
adad 桂一枝
yuan 袁平秀
maling 馬藺
sunnygao 高中元
lynn 庾毅玲
manning 張琴
cindyzhang 張霞
susanz 張茜
xml 許美玲
anna 許鳳娜
gzw 郭志偉
cyz 陳玉珍
chengjuan 陳娟
w_chl 陳海林
sallych 陳新芬
steven 陳新華
nacy88 陶燕
penny 彭泳芬
allan 曾月蘭
siqian 曾江文
zxl 曾秀蓮
fang 馮清芳
zoeh 黃金霞
devison 黃遠志
yxh 楊曉寒
wyh 溫遠紅
winnie 溫賜勤
wanchaoxia 萬超霞
qiao 葉升橋
zbf 鄒冰峰
lxx 廖香秀
medio 廖鶯
yongna 趙利華
elle 趙華
sunnyz 趙蘭靜
luck 劉志
adolph 劉勇強
josephp 劉紹雄
annaliu 劉曙輝
sunlight 蔡華軍
fifi 談錦菲
rady 鄭火金
cindy 黎秀滿
clear 錢立異
qzz 錢自珍
edmund 鮑全家
eva 韓海華
jane 羅  偵
raoping 饒    萍
della 龔蓮秀
jane_y 宁永紅
lxf 宁佩芳
ydm 閆冬梅

我估計可能是按繁體的內碼來排列的,誰對漢字的內碼有研究!
請貼出來下,OK!

#16


對繁體字內碼有了解的,請出來關注下!

#17


汉字的国标码分一级字库和二级字库。一级字库存放最常用字,二级字库存放次常用字。一级字库在前,二级字库在后。一级字库按拼音编码,二级字库按笔画编码。平时我们用到的字一般都在一级字库中,故总是按拼音排序,楼主用的字大都在二级字库中,所以排序就不按拼音了。

#18


我这里简体的好象都正常嘛~~

学习~~

#19


jiangxj 说的不错.

#20


肯定是ASCII码,系统有会按声母去排序的,你的孟排在第一是因为前面还有空格或者其它字符,你再仔细检查检查

#21


肯定是ASCII码,系统不会按声母去排序的,你的孟排在第一是因为前面还有空格或者其它字符,你再仔细检查检查

#22


我不想说什么了,大家已经说完了。只要给分就OK了。

#23


挺麻烦的~~~~~都说差不多了~~~~~~

#24


顺便问下:谁知道有什么函数可以去一个字符串中间的空格吗,能在SQL里面那再好不过了?
总之,有什么方法,大家不烦说说吧!

#25





































广






























































夿








































































































































































































































鯿

























































































淿













俿























秿



























































褿




































































































#26


我只知道可以去左右的
如果想去中间的,可以用循环逐个截取字符,判断是否为‘’,再用另一个变量将不是‘’的串起来保存,自己做做看,应该不难的。

#27


将上面 简体汉字 翻译成 繁体汉字

翻十个,给一分,即增见识又拿分,多好!

#28


记住翻译格式
一个简体汉字 + 一个TAB键 + 一个繁体汉字
-------------------还有------------------
































#29


我的繁体也是按声母排的,你的数据库是繁体版本?

#30


Sybase英文正版!

#31


我用过的SYBASE FOR SUN 也没有这个问题,奇怪!!

#32


可能你说的对吧,我正在查原因!

#33


排序规则是按数据库设定的排序规则进行的
如MS_SQLSERVER在安装时会让你选择数据排序规则(ASCII,简体中文字符集或繁体中文字符集等),而排序的规则根据字符库中内码排序。
借用  jiangxj()

汉字的国标码分一级字库和二级字库。一级字库存放最常用字,二级字库存放次常用字。一级字库在前,二级字库在后。一级字库按拼音编码,二级字库按笔画编码。平时我们用到的字一般都在一级字库中,故总是按拼音排序,楼主用的字大都在二级字库中,所以排序就不按拼音了。

#34


数据库有编码字库的选择!
可以用系统过程进行设置!

#35


to  Rocklet_me(澹澹堂主人) :
這種方法去中間空格不好!
控制很煩瑣,太慢了!

#36


吼吼~~偶是菜鸟拉,只会笨办法,8好意思~`
搬个凳子仔细听,学习新招~`~`

#1


刚试过用pb9.的确是按第一个汉字的声母排的,我看错了还是楼主看错了?

升级的话是 

数字
字母
汉字(声母是a)
...
...
...
汉字(声母是z)

#2


嗯..至少简体应该是按声母排序吧. 不过windows区域设置里面有个排序选项, 不知道有没有影响.

#3


我測試過了,對漢字是按聲母排序的,樓主是不是搞錯了

#4


執行的sql如下:

select distinct(user_code),user_name 
from userlist u,sample_main s
where u.user_code = s.operate_name
order by user_name asc;
--------------------------
result如下:(大家看看,我是否看錯!那就是繁體的原因了,以前一直沒用繁體,所以沒發現該問題,不知道有誰知道,繁體是按什麼排序)

user_code  user_name

mengxh  孟曉紅
mrp2 MRPII
christine christine
era era
gaohui gaohui
ghy ghy
jasmine jasmine
joeychan joey
laura laura
lecqw lecqw
tch tch
welson welson
dan 于丹丹
yzm 于志民
caixiaf 丰彩霞
shirleyyin 尹麗平
xixi 孔思如
wenny 方惠芳
brian 王小菲
wp 王平
mickey 王秀 鵬
anson 王俊
wjming 王界明
rocs 司向輝
may 甘燕梅
bbing 白冰
junny 伍秋慧
meibao 伍美寶
tequila 朱晶峰
amg 朱雯艷
amy 朱雯艷
zfl 朱鳳蓮
sara 余潤鳳
rainbow 吳紅虹
winnie 呂淑琴
winning 呂淑琴
lzqw *青
libert 李亞猛
kathy 李春燕
teddyli 李秋蘭
ljc 李家彩
lie 李瑞娥
janeli 李霽
kingdom 汪英明
jeh 周宋
jbr 季邦榮
dick 林俊松
lkx 林康秀
qzq 邱志強
qqz 邱勤娟
qfbo 金花
coco 洪海容
kuotan 胡丹
aiai 胡玲愛
christ 胡英姿
hannahhou 候俊
alice_hou 候鵬智
alans 倪繼軍
colindon 唐睿麟
wendy 夏桂英
tn 孫蓉
harrysun 孫廣華
liling 孫禮玲
feng 徐求鳳
anterxu 徐常君
aimmexu 徐琴
adad 桂一枝
judyma 馬珊英
sunnygao 高中元
gq 高群
lynn 庾毅玲
ring 張世英
kali 張玉蓮
davidz 張俊
johnnyz 張科
kenzh 張堅成
sherry 張瑤
owen 張劍彬
zhangx 張霞
cindyzhang 張霞
susanz 張茜
keving 強國龍
sean 莊志平
xml 許美玲
anna 許鳳娜
gzw 郭志偉
stevenguo 郭智勇
cyz 陳玉珍
janetchen 陳金平
neilchan 陳述春
chengjuan 陳娟
w_chl 陳海林
wendyc 陳雪芸
sallych 陳新芬
steven 陳新華
nacy88 陶燕
jasonp 彭石根
warrenjing 景文朝
allan 曾月蘭
zxl 曾秀蓮
tobo 項小月
sunnyxiang 項前
fang 馮清芳
zoeh 黃金霞
hsq 黃淑清
jaryyang 楊登文
yxh 楊曉寒
wyh 溫遠紅
wanchaoxia 萬超霞
qiao 葉升橋
louie 董靖
nancydong 董蘇金
george 董顯平
zyh 鄒月華
zbf 鄒冰峰
ritac 廖志巧
lxx 廖香秀
zxlan 趙曉蘭
leonlau 劉玉
lewie 劉志
josephp 劉紹雄
liuc 劉潮
annaliu 劉曙輝
alexpan 潘正
sunlight 蔡華軍
fifi 談錦菲
rady 鄭火金
cindy 黎秀滿
uf 黎林芳
clear 錢立異
edmund 鮑全家
angelhan 韓雨
eva 韓海華
kelvinlaw 羅景華
tj 譚級
amyyan 嚴晶晶
sophia 蘇云淑
raoping 饒    萍
king 顧彬
sandyg 龔萍
lxf 宁佩芳
ydm 閆冬梅
martinqu 矍斌

#5


不是按声母来排序的,全是按ASCII码来排序的,按ASCII来排序的话,大部分汉字应该是声母,但多音字的那些就不一定了,呵呵

#6


sql语句结果的排序是按数据库系统的排序规则处理的。

#7


没听说过,我这里一切正常~

#8


字母,简体,繁体,乱码

#9


ss

#10


to  lzp_lrp(lzp):
我在這個結果裡面真的發現不出到底是按什麼排序的,按ASCII码也不全對!
mengxh  孟曉紅          真搞不懂這個姓孟的怎麼會排在第一!
mrp2 MRPII            它排列第二,看MRPII是大寫就算了
christine christine
era era
gaohui gaohui
ghy ghy
jasmine jasmine
joeychan joey
laura laura
lecqw lecqw
tch tch
welson welson      從MRPII到welson打止,這部分可以看成是按ASCII碼排序
dan 于丹丹      那後來簡直就沒任何規律,簡直就是亂七八糟的在排!
yzm 于志民
caixiaf 丰彩霞


......................
唉,搞馱不清!

#11


因为孟前面有个空格

#12


select distinct(user_code),trim(user_name )
from userlist u,sample_main s
where u.user_code = s.operate_name
order by trim(user_name) asc;

就可以了

#13


建议你整理数据
update xxx set name=trim(name)

#14


学习中…………

#15


先謝了 sun1976(关羽观雨),你說的很對,的確是空格問題,
我用的sybase數據庫,語法是這樣的,供大家參考:
select distinct(user_code),user_name
from userlist u,sample_main s
where u.user_code = s.operate_name
order by rtrim(ltrim(user_name));

查詢結果如下:(還是沒按音序來排)

user_code user_name

betty Betty
mrp2 MRPII
gaohui gaohui
laura laura
songhui songhui
tch tch
welson welson
maggie 丁明霞
dan 于丹丹
yzm 于志民
caixiaf 丰彩霞
shirleyyin 尹麗平
chou 仇圣榮
xixi 孔思如
wenny 方惠芳
brian 王小菲
todd 王友華
wp 王平
mickey 王秀 鵬
lisa 史蘭麗
bbing 白冰
junny 伍秋慧
meibao 伍美寶
kdm 匡冬梅
amg 朱雯艷
amy 朱雯艷
zfl 朱鳳蓮
hj 何   建
judy 何海亞
winning 呂淑琴
lzqw *青
teddyli 李秋蘭
ljc 李家彩
lie 李瑞娥
wqh 汪啟宏
jeh 周宋
mengxh  孟曉紅
lkx 林康秀
qqz 邱勤娟
qfbo 金花
aiai 胡玲愛
shirly 胡美芳
wendy 夏桂英
irenex 徐蕾
adad 桂一枝
yuan 袁平秀
maling 馬藺
sunnygao 高中元
lynn 庾毅玲
manning 張琴
cindyzhang 張霞
susanz 張茜
xml 許美玲
anna 許鳳娜
gzw 郭志偉
cyz 陳玉珍
chengjuan 陳娟
w_chl 陳海林
sallych 陳新芬
steven 陳新華
nacy88 陶燕
penny 彭泳芬
allan 曾月蘭
siqian 曾江文
zxl 曾秀蓮
fang 馮清芳
zoeh 黃金霞
devison 黃遠志
yxh 楊曉寒
wyh 溫遠紅
winnie 溫賜勤
wanchaoxia 萬超霞
qiao 葉升橋
zbf 鄒冰峰
lxx 廖香秀
medio 廖鶯
yongna 趙利華
elle 趙華
sunnyz 趙蘭靜
luck 劉志
adolph 劉勇強
josephp 劉紹雄
annaliu 劉曙輝
sunlight 蔡華軍
fifi 談錦菲
rady 鄭火金
cindy 黎秀滿
clear 錢立異
qzz 錢自珍
edmund 鮑全家
eva 韓海華
jane 羅  偵
raoping 饒    萍
della 龔蓮秀
jane_y 宁永紅
lxf 宁佩芳
ydm 閆冬梅

我估計可能是按繁體的內碼來排列的,誰對漢字的內碼有研究!
請貼出來下,OK!

#16


對繁體字內碼有了解的,請出來關注下!

#17


汉字的国标码分一级字库和二级字库。一级字库存放最常用字,二级字库存放次常用字。一级字库在前,二级字库在后。一级字库按拼音编码,二级字库按笔画编码。平时我们用到的字一般都在一级字库中,故总是按拼音排序,楼主用的字大都在二级字库中,所以排序就不按拼音了。

#18


我这里简体的好象都正常嘛~~

学习~~

#19


jiangxj 说的不错.

#20


肯定是ASCII码,系统有会按声母去排序的,你的孟排在第一是因为前面还有空格或者其它字符,你再仔细检查检查

#21


肯定是ASCII码,系统不会按声母去排序的,你的孟排在第一是因为前面还有空格或者其它字符,你再仔细检查检查

#22


我不想说什么了,大家已经说完了。只要给分就OK了。

#23


挺麻烦的~~~~~都说差不多了~~~~~~

#24


顺便问下:谁知道有什么函数可以去一个字符串中间的空格吗,能在SQL里面那再好不过了?
总之,有什么方法,大家不烦说说吧!

#25





































广






























































夿








































































































































































































































鯿

























































































淿













俿























秿



























































褿




































































































#26


我只知道可以去左右的
如果想去中间的,可以用循环逐个截取字符,判断是否为‘’,再用另一个变量将不是‘’的串起来保存,自己做做看,应该不难的。

#27


将上面 简体汉字 翻译成 繁体汉字

翻十个,给一分,即增见识又拿分,多好!

#28


记住翻译格式
一个简体汉字 + 一个TAB键 + 一个繁体汉字
-------------------还有------------------
































#29


我的繁体也是按声母排的,你的数据库是繁体版本?

#30


Sybase英文正版!

#31


我用过的SYBASE FOR SUN 也没有这个问题,奇怪!!

#32


可能你说的对吧,我正在查原因!

#33


排序规则是按数据库设定的排序规则进行的
如MS_SQLSERVER在安装时会让你选择数据排序规则(ASCII,简体中文字符集或繁体中文字符集等),而排序的规则根据字符库中内码排序。
借用  jiangxj()

汉字的国标码分一级字库和二级字库。一级字库存放最常用字,二级字库存放次常用字。一级字库在前,二级字库在后。一级字库按拼音编码,二级字库按笔画编码。平时我们用到的字一般都在一级字库中,故总是按拼音排序,楼主用的字大都在二级字库中,所以排序就不按拼音了。

#34


数据库有编码字库的选择!
可以用系统过程进行设置!

#35


to  Rocklet_me(澹澹堂主人) :
這種方法去中間空格不好!
控制很煩瑣,太慢了!

#36


吼吼~~偶是菜鸟拉,只会笨办法,8好意思~`
搬个凳子仔细听,学习新招~`~`