SQL中英文排序

mikeweier 2008-09-11 08:46:26
现有数据
2
3

1


sj
sa

他们
w

要排列成
1 2 3 阿 好 你 sa sj 他 他们 w 我
现在的排列为
1 2 3 sa sj w 阿 好 你 他 他们 我
谁能帮我解决这个问题?先谢谢了
...全文
279 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mikeweier 2008-09-17
  • 打赏
  • 举报
回复
哎,又一次没有答案的答案
失望呀
mikeweier 2008-09-12
  • 打赏
  • 举报
回复
我不想去修改数据库,临时打印一下报表而已
谢谢帮忙
「已注销」 2008-09-12
  • 打赏
  • 举报
回复
生成一个首字母字段
mikeweier 2008-09-11
  • 打赏
  • 举报
回复
嗯,就是fvflove的意思,但有没有办法直接排序,因为数据量也比较大,有十万左右,而且是临时的,用数据库自身的排序,排出来的是最后面那种顺序,有没有办法不动数据库的方法按中文首拼音与英文混排序呢?
fvflove 2008-09-11
  • 打赏
  • 举报
回复
他是想将 汉字 先按 起始 拼音 首字 与字母 一起按升序排列.

1 2 3 阿 好 你 sa sj 他 他们 w 我
1 2 3 a a n sa sj t tm w w


所以首先要将其读出拼音首字.
再进行排序.

我用了一个自定义取得 文本的 拼音 首字用于 SQL 不行.

于是我想只有以下方法了.

1.再增加一列.

将此列中的数据用(是老马的取拼音首字)取得拼音首字.并保存至数据库.

再对数据库接新增的那列按升序排列.

以下贴出老马的取拼音首字的代码:


'*************************************************************************
'**模 块 名:ModGetPY
'**说 明:取汉字拼音首字母,改良自网上某版本
'**创 建 人:嗷嗷叫的老马
'**日 期:2008年3月17日
'**备 注: 紫水晶工作室 版权所有
'**版 本:V1.0
'*************************************************************************


Public Function GetPYChar(ByVal sChar As String) As String
'返回第一个汉字拼音首字母
'sChar - 转入的汉字
'返回值:
' 成功返回第一个字的拼音首字母
' 失败返回原字符串
Dim lChar As Long

lChar = 65536 + Asc(sChar)
Select Case lChar
Case 45217 To 45252
GetPYChar = "A"
Case 45253 To 45760
GetPYChar = "B"
Case 45761 To 46317
GetPYChar = "C"
Case 46318 To 46825
GetPYChar = "D"
Case 46826 To 47009
GetPYChar = "E"
Case 47010 To 47296
GetPYChar = "F"
Case 47297 To 47613
GetPYChar = "G"
Case 47614 To 48118
GetPYChar = "H"
Case 48119 To 49061
GetPYChar = "J"
Case 49062 To 49323
GetPYChar = "K"
Case 49324 To 49895
GetPYChar = "L"
Case 49896 To 50370
GetPYChar = "M"
Case 50371 To 50613
GetPYChar = "N"
Case 50614 To 50621
GetPYChar = "O"
Case 50622 To 50905
GetPYChar = "P"
Case 50906 To 51386
GetPYChar = "Q"
Case 51387 To 51445
GetPYChar = "R"
Case 51446 To 52217
GetPYChar = "S"
Case 52218 To 52697
GetPYChar = "T"
Case 52698 To 52979
GetPYChar = "W"
Case 52980 To 53640
GetPYChar = "X"
Case 53689 To 54480
GetPYChar = "Y"
Case 54481 To 55289
GetPYChar = "Z"
Case Else
GetPYChar = sChar
End Select
End Function

Public Function GetPY(ByVal InString As String, Optional ByVal MaxLen As Variant) As String
'转换一个字符串内所有汉字为拼音首字母
'InString - 输入的汉字字符串
'MaxLen - 返回的字符最大长度
'返回值:
' 所有汉字的拼音首字母.
'备注:
' 仅处理汉字,非汉字原样返回.
' 如果转换后的字符串长度大于MaxLen,那么从左起取MaxLen-1个字符加上最后一个字符作为返回值.
Dim I As Long

For I = 0 To Len(InString) - 1
GetPY = GetPY & GetPYChar(Mid(InString, I + 1, 1))
Next
If IsMissing(MaxLen) = False Then
If Len(GetPY) > MaxLen Then
GetPY = Mid(GetPY, 1, MaxLen - 1) & Right(GetPY, 1)
End If
End If
End Function

jhone99 2008-09-11
  • 打赏
  • 举报
回复
没有规矩?
goosen 2008-09-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 mikeweier 的帖子:]
现有数据

要排列成
1 2 3 阿 好 你 sa sj 他 他们 w 我
现在的排列为
1 2 3 sa sj w 阿 好 你 他 他们 我
[/Quote]


到底要排成什么样

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧