问一下order by的问题

cattycat 2011-10-24 11:17:19
我的表中有一列是字符串,我想排序,要的结果是ascii码顺序的那种,结果看样子是忽略大小写排的序。怎么按字母顺序排啊? 谢谢!
...全文
163 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwwb 2011-10-24
  • 打赏
  • 举报
回复
是用utf8_general_ci的校正规则
参考:
http://dev.mysql.com/doc/refman/5.0/en/charset-table.html

转:
我们在create table时经常会碰到这样的语句,例如:`nickname` varchar(50) COLLATE utf8_unicode_ci NOT NULL,那它到底是什么意思呢?不妨看看下面:

首先,collate是一个子句,可应用于数据库定义或列定义以定义排序规则,或应用于字符串表达式以应用排序规则投影。

语法是collate collation_name

参数collate_name是应用于表达式、列定义或数据库定义的排序规则的名称。collation_name 可以只是指定的 Windows_collation_name 或 SQL_collation_name。


SQL_collation_name 是 SQL 排序规则的排序规则名称。参见 SQL 排序规则名称。

下面简单介绍一下排序规则:

什么叫排序规则呢?MS是这样描述的:"在 Microsoft SQL Server 2000 中,
字符串的物理存储由排序规则控制。排序规则指定表示每个字符的位模式以及存
储和比较字符所使用的规则。"
  在查询分析器内执行下面语句,可以得到SQL SERVER支持的所有排序规则。

    select * from ::fn_helpcollations()

排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。
如:
  Chinese_PRC_CS_AI_WS
前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则。
排序规则的后半部份即后缀含义:
  _BIN 二进制排序
  _CI(CS) 是否区分大小写,CI不区分,CS区分
  _AI(AS) 是否区分重音,AI不区分,AS区分   
  _KI(KS) 是否区分假名类型,KI不区分,KS区分 
_WI(WS) 是否区分宽度 WI不区分,WS区分 

区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。
区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,
比较还将重音不同的字母视为不等。
区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。
区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项
cattycat 2011-10-24
  • 打赏
  • 举报
回复
utf8_general_ci
这是什么含义,谢谢!
wwwwb 2011-10-24
  • 打赏
  • 举报
回复
在数据库中SELECT COLLATION('ABC')
看看结果,与字符集设置有关

在建表时可用COLLATE 指定字符
cattycat 2011-10-24
  • 打赏
  • 举报
回复

| CM_00Q1H3OP |
| CM_00Q38GEJ |
| pdata_1024 |
| pdata_1090 |
| pdata_110342 |
| pdata_128751 |
| pdata_13033 |
| pdata_157503 |
| pdata_16180 |
| pdata_16202 |
| RR_00061OHT |
| RR_0006NJE7 |
| RR_0009KNCQ |
| RR_000E92CK |

这是直接用order by的顺序部分结果,显然是忽略大小写用ascii函数应该是可以了。
不知道是不是数据库中有什么设置不能直接按ascii排序吗。
WWWWA 2011-10-24
  • 打赏
  • 举报
回复
OR
ORDER BY ACSII(F1)
wwwwb 2011-10-24
  • 打赏
  • 举报
回复
帐号记录及要求结果出来看看
TRY:
ORDER BY CONVERT(F1 USING ASCII)

56,940

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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