在SQL中使用[a-9]而不是[0-Z]对ORDER进行ORDER
发布时间:2020-12-12 06:38:00 所属栏目:MsSql教程 来源:网络整理
导读:默认情况下,SQL在字符前排序数字. 所以,如果我有“名称”列: abcab1a1b1ba1bacb21 由于SQL按0-Z(先0到9,然后是a-Z)排序,因此查询 SELECT * FROM ... ORDER BY name 将导致: 1ba1baca1bab1abcabc1b21 但我希望它按a-0排序(先是a-Z,然后是0-9). abcabc1ab1a1b
默认情况下,SQL在字符前排序数字.
所以,如果我有“名称”列: abc ab1 a1b 1ba 1bac b21 由于SQL按0-Z(先0到9,然后是a-Z)排序,因此查询 SELECT * FROM ... ORDER BY name 将导致: 1ba 1bac a1b ab1 abc abc1 b21 但我希望它按a-0排序(先是a-Z,然后是0-9). abc abc1 ab1 a1b b21 1ba 1bac 如何在查询中执行此操作?更具体地说,我如何在SQLite中执行此操作? 我在Sort MySQL results alphabetically,but with numbers last中找到了一个解决方案,但仅限于第一个char. 解决方法我建议选择另一个列,比如name_replace,将数字替换为高位ASCII字符(例如?),然后在该列上排序,然后在名称上排序.不幸的是,SQLite不支持 regular expression替换:SELECT name,replace( ... replace(replace(name,'0','~'),'1','~') ... '9','~') AS name_replace FROM mytable ORDER BY name_replace,name 在name_replace上排序时,数字将是最后的.然后按名称排序将按数字排序. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – 编写一个简单的银行模式:我应该如何使我的余
- 2010-01-05 13:51 SQLserver2000数据库置疑的解决方法汇总
- sql – 为什么Postgres不使用索引?
- sql – 高写入(10000次插入/小时),低读取(10次读取/秒)的最
- SQLServer多行多列数据转为一行
- 简单实现SQLServer转MYSQL的方法
- SQLServer 2005 MSG 2570 类型为"In-row data" 中。
- Access-SQL:内部连接多个表
- sql-server – 使用GUI恢复数据库 – 要恢复的文件错误
- .net – 使用编译查询时,还需要存储过程吗?