SQL对汉字月份进行排序的两种方法
有时候进行排序的时候,需要对汉字进行排序,可是默认的order by 是按ASCII码排序。
所以没法对汉字进行排序。
比如下面的例子:
一月,五月,四月,十月,十一月,十二月,三月,七月,六月,九月,二月,八月
常规的语句是这样的:
1 | SELECT MONTH FROM aa ORDER BY MONTH |
这样子是结果都是乱的。
明凯在这里想到了两种方法来进行解决:
第一种方法:
将汉字用函数自定义数字。这样排序排的就是数字了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | SELECT MONTH FROM aa ORDER BY CASE MONTH WHEN '一月' THEN 1 WHEN '二月' THEN 2 WHEN '三月' THEN 3 WHEN '四月' THEN 4 WHEN '五月' THEN 5 WHEN '六月' THEN 6 WHEN '七月' THEN 7 WHEN '八月' THEN 8 WHEN '九月' THEN 9 WHEN '十月' THEN 10 WHEN '十一月' THEN 11 WHEN '十二月' THEN 12 ELSE 99 END |
这样子是可以的。
第二种方法:
通过CHARINDEX函数来排序。
在SQL中,CHARINDEX函数常常用来在一段字符中搜索字符或者字符串。
1 2 3 4 | SELECT MONTH FORM aa ORDER BY CHARINDEX (MONTH,'一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月') |
这里就不介绍CHARINDEX函数了。
但是charindex为SQL Server函数,Oracle中使用函数instr。
WordPress最近访客小工具纯代码实现方法 Wopus主机酋长主机购买续费域名注册优惠码推介码:mk