mysql中如何给字符型的数字mysql更改字段字符集进行排序

对包含数字的字符串进行排序
写了一个字符串比较器,用来对包含数字的字符串进行排序。
package eli.arithmetic.
import java.util.C
* 字符串比较类。对包含非数字的字符串进行比较。
* @author &a href="mailto:eli.">屹砾(ELi)&/a>
public class NumberComparator implements Comparator&String> {
private boolean ignoreCase =
public NumberComparator() {
public NumberComparator(boolean ignoreCase) {
this.ignoreCase = ignoreC
public int compare(String o1, String o2) {
if (ignoreCase) {
o1 = o1.toLowerCase();
o2 = o2.toLowerCase();
for (int i = 0; i & o1.length(); i++) {
if (i == o1.length() && i & o2.length()) {
return -1;
} else if (i == o2.length() && i & o1.length()) {
char ch1 = o1.charAt(i);
char ch2 = o2.charAt(i);
if (ch1 >= '0' && ch2 &= '9') {
int i1 = getNumber(o1.substring(i));
int i2 = getNumber(o2.substring(i));
if (i1 == i2) {
return i1 - i2;
} else if (ch1 != ch2) {
return ch1 - ch2;
private int getNumber(String str) {
int num = Integer.MAX_VALUE;
int bits = 0;
for (int i = 0; i & str.length(); i++) {
if (str.charAt(i) >= '0' && str.charAt(i) &= '9') {
if (bits > 0) {
num = Integer.parseInt(str.substring(0, bits));
测试文件。
package eli.arithmetic.
import java.io.F
import java.io.FileF
import java.util.ArrayL
import java.util.C
import java.util.I
import java.util.L
import sun.security.krb5.internal.p;
import eli.arithmetic.comparator.NumberC
import junit.framework.TestC
public class Sort extends TestCase {
public void testFile() {
List&String> list = new ArrayList&String>(0);
File folder = new File("E:/(API文档)");
File[] files = folder.listFiles(new FileFilter() {
public boolean accept(File pathname) {
return pathname.isFile();
for (int i = 0; i & files. i++) {
list.add(files[i].getName());
Collections.sort(list, new NumberComparator());
for (int i = 0; i & list.size(); i++) {
System.out.println(list.get(i));
  测试结果:
arcobjects.chm
c3p0-0.9.1.2.jar
dbcp-1.2.2-Api.chm
Falcon.txt
Hibernate3.1API.chm
iBATIS-2.3.0.677-Api.chm
iBATIS-2.3.0.677-User-Api.chm
J2EE1.4API.chm
J2SE5.0API规范.chm
JEE-5.0-API.chm
jee-dev.iso
jse-core.iso
JSF1.1API.chm
JSF-TagLib.chm
MySQL5.1参考手册.chm
MySQL-6.0-Reference-Manual.chm
Spring1.2.8API.chm
Spring2.0API.chm
Spring2.1API.chm
Spring开发参考手册.chm
SqlMapTransactionDaoTemplate.java
Struts1.1API.chm
VistaLE.jpg
文档List性能.txt
相关报道:
新闻热线:010-
责任编辑:
名企动态: |
标志着Windows迈出个性化计算的第一步……
本站特聘法律顾问:于国富律师
Copyright (C)
newhua.comMysql字符串中有数字的排序问题_百度知道
Mysql字符串中有数字的排序问题
如有以下几条数据
现在直接order by col asc 则是
我想select出来这样
我有更好的答案
SELECT id, col,LENGTH(col) FROM d ORDER BY LENGTH(col) ASC, col ASC或者SELECT id,col FROM d ORDER BY CAST(TRIM('中文' FROM col) AS SIGNED)根据实际情况看吧
采纳率:23%
你的“中文”是固定的文字吗?--下面的语句只支持9999以下的数字排序select&id,col,&right(col,length(col)-LEAST(&&&&if(Locate('0',col)&&0,Locate('0',col),9999),&&&&if(Locate('1',col)&&0,Locate('1',col),9999),&&&&if(Locate('2',col)&&0,Locate('2',col),9999),&&&&if(Locate('3',col)&&0,Locate('3',col),9999),&&&&if(Locate('4',col)&&0,Locate('4',col),9999),&&&&if(Locate('5',col)&&0,Locate('5',col),9999),&&&&if(Locate('6',col)&&0,Locate('6',col),9999),&&&&if(Locate('7',col)&&0,Locate('7',col),9999),&&&&if(Locate('8',col)&&0,Locate('8',col),9999),&&&&if(Locate('9',col)&&0,Locate('9',col),9999)&&)-1)&*1&a&&&from&test4&order&by&a
本回答被提问者采纳
select * from 表名 order by substring(col,3,2)+0;
select id, col from tableName order by length(col) asc, col asc
用模糊查询&中文_&order by col Asc 后再并上后面的
select id,col from tablename order by col+0即可
其他3条回答
为您推荐:
其他类似问题
mysql的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。mysql将字符串字段转为数字排序或比大小
mysql里面有个坑就是,有时按照某个字段的大小排序(或是比大小)发现排序有点错乱。后来才发现,是我们想当然地把对字符串字段当成数字并按照其大小排序(或是比大小),结果肯定不会是你想要的结果。
这时候需要把字符串转成数字再排序。
最简单的办法就是在字段后面加上+0
如把'123'转成数字123(以下例子全为亲测):
方法一:ORDER BY '123'+0;(首推)
方法二:ORDER BY
CAST('123' AS SIGNED);
方法三:ORDER BY CONVERT('123',SIGNED);
SELECT '123'+0;
SELECT '123'+0&127;
SELECT '123'+0&12;
SELECT CAST('123' AS SIGNED);
SELECT CONVERT('123',SIGNED)&127;
SELECT CONVERT('123',SIGNED)&12;
SELECT CAST('123' AS SIGNED);
-- 结果为123
SELECT CAST('123' AS SIGNED)&127;
-- 结果为0
SELECT CAST('123' AS SIGNED)&12;
-- 结果为1
综合例子:
SELECT '123'+0&12 ORDER BY CONVERT('123',SIGNED);
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
字段为字符型,数据格式为 字符+数字
用什么方法才能按照数值型排序,试过CAST, 以及ABS都不能够完美实现
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
如果字符类型长度,前缀都是一样的,
前缀dslr,真实数字长度3位,那么按照字符排序应该就可以了。
否则的话,如果数据量不大的话,取出来在内存中排序就行,不然的话建议用自定义函数
先将字段切出来,或许放在视图中,然后再对视图排序。
按照另外一个答案的提示:
SELECT CONVERT(SUBSTRING(dslr, 5), INTEGER) AS dslr from
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
实在解决不了还是建议在PHP端(获取他语言)中处理
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
SELECT SUBSTRING(dslr, 5) AS dslr from table order by --
table 是表名
5 你自己斟酌着改
dslr 是字段名
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
按住视频可进行拖动
&正在加载...
举报视频:
举报原因(必填):
请说明举报原因(300字以内):
请输入您的反馈
举报理由需要输入300字以内
感谢您的反馈~
请勿重复举报~
请刷新重试~
收藏成功,可进入
查看所有收藏列表
当前浏览器仅支持手动复制代码
视频地址:
flash地址:
html代码:
通用代码:
通用代码可同时支持电脑和移动设备的分享播放
用爱奇艺APP或微信扫一扫,在手机上继续观看
当前播放时间:
一键下载至手机
限爱奇艺安卓6.0以上版本
使用微信扫一扫,扫描左侧二维码,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:
设备搜寻中...
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
连接失败!
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
部安卓(Android)设备,请点击进行选择
请您在手机端下载爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:
爱奇艺云推送
请您在手机端登录爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
180秒后更新
打开爱奇艺移动APP,点击“我的-扫一扫”,扫描左侧二维码进行登录
没有安装爱奇艺视频最新客户端?
mysql 按部分字符串相同排序
正在检测客户端...
您尚未安装客户端,正在为您下载...安装完成后点击按钮即可下载
30秒后自动关闭
mysql 按部分字符串相同排序">mysql 按部分字符串相同排序
请选择打赏金额:
播放量12.7万
播放量数据:快去看看谁在和你一起看视频吧~
更多数据:
热门短视频推荐
Copyright (C) 2018 & All Rights Reserved
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
正在为您下载爱奇艺客户端安装后即可快速下载海量视频
正在为您下载爱奇艺客户端安装后即可免费观看1080P视频
&li data-elem="tabtitle" data-seq="{{seq}}"& &a href="javascript:void(0);"& &span>{{start}}-{{end}}&/span& &/a& &/li&
&li data-downloadSelect-elem="item" data-downloadSelect-selected="false" data-downloadSelect-tvid="{{tvid}}"& &a href="javascript:void(0);"&{{pd}}&/a&
选择您要下载的《
后才可以领取积分哦~
每观看视频30分钟
+{{data.viewScore}}分
{{data.viewCount}}/3
{{if data.viewCount && data.viewCount != "0" && data.viewCount != "1" && data.viewCount != "2" }}
访问泡泡首页
+{{data.rewardScore}}分
{{if data.rewardCount && data.rewardCount != 0 && data.getRewardDayCount != 0}}1{{else}}0{{/if}}/1
{{if data.rewardCount && data.rewardCount != 0 && data.getRewardDayCount != 0}}
+{{data.signScore}}分
{{data.signCount}}/1
{{if data.signCount && data.signCount != 0}}
色情低俗内容
血腥暴力内容
广告或欺诈内容
侵犯了我的权力
还可以输入
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制}

我要回帖

更多关于 mysql更改字段字符集 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信