sql 字母数字组合 排序

sql server 字母和数字 符号混合排序问题
例如: select * from ywbalance ORDER BY kh
阴7-10-C
阴7-1-A
阴7-1-B

怎么可以是这样排序?
阴7-1-A
阴7-1-B
阴7-10-C

截取分段排序

order by left(kh,charindex('-',kh)-1)
,convert(int,substring(kh,charindex('-',kh)+1,charindex('-',kh,charindex('-',kh)+1)-charindex('-',kh)-1))
,right(kh,len(kh)-charindex('-',kh,charindex('-',kh)+1))

追问

向 substring 函数传递了无效的 length 参数。

追答

这个语句我已经测试过了,如果出现错误就是你的这个排序字段有其他格式干扰
另外,如果你只用最后一位的字母排序的话,直接截取最后一位也可以,中间的忽略
order by left(kh,charindex('-',kh)-1),right(kh,1)

追问

我也不知道有什么格式干扰啊..........这个怎么办?

追答

这样查一下有-符号的个数,不存在两个的有多少
where len(kh)-len(replace(kh,'-',''))2

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-10
select * from ywbalance ORDER BY kh asc

这个是数字从小到大排列,字母从A到Z排列
第2个回答  2021-06-08
按照特殊字符后的数字进行排序:

正序:

select * from table01 where ColumnNum like 'BHxxxx-%' order by cast(SUBSTRING(ColumnNum,CHARINDEX('-',ColumnNum,CHARINDEX('-',ColumnNum))+1,len(ColumnNum)) as int);

倒序:

select * from table01 where ColumnNum like 'BHxxxx-%' order by cast(SUBSTRING(ColumnNum,CHARINDEX('-',ColumnNum,CHARINDEX('-',ColumnNum))+1,len(ColumnNum)) as int) desc;

SQL order by 字母数字还有符号的混合排序
order by substring(num,1,1),cast (substring(num,2,len(num)-1) as int)

是真的猛!SQL 语法速成手册
数值处理、函 数说 明、函 数说 明、SIN()、正弦、COS()、余弦、TAN()、正切、ABS()、绝对值、SQRT()、平方根、MOD()、余数、EXP()、指数、PI()、圆周率、RAND()、随机数。汇总、函 数说 明、AVG()、返回某列的平均值、COUNT()、返回某列的行数、MAX()、返回某列的最大值、MIN()、返...

SQL 语法速成手册(干货满满,建议收藏!)
组合查询 其中, SOUNDEX() 可以将一个字符串转换为描述其语音表示的字母数字模式。AVG() 会忽略 NULL 行。使用 DISTINCT 可以让汇总函数值汇总不同的值。指定多个列的排序方向 分组 分组后排序 使用 WHERE 和 HAVING 过滤数据 (以下为 DDL 语句用法)普通创建 根据已有的表创建新表 添加列...

第五章 SQL定义表(一)
可选的`SqlTableName`关键字允许指定不同的SQL表名。当使用`CREATE TABLE`命令创建表时,系统使用表名生成持久化类名。应注意到非字母数字字符的名称转换可能不同。同一模式中的视图和表不能具有相同名称,尝试这样做会导致错误。使用`$SYSTEM.SQL.TableExists()`和`$SYSTEM.SQL.ViewExists()`方法检查...

请问大家手机号码尾数:AAAB,ABAB,AABB,哪种形式的尾数最好?在数字...
举报| 评论 8 6 最好的是:AAAA或者BBBB 按照你的数字组合排序:8899、8989、8889 希望对你有帮助 red789china | 发布于2012-01-03 举报| 评论 13 3 ABAB ,AABB,AAAB AAAB会容易让人记错少输或多输数字 wangshumin兔子 | 发布于2012-01-09 举报| 评论 7 13 其他6条回答 为...

相似回答