sql 字符串 排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 字符串 排序相关的知识,希望对你有一定的参考价值。

sql 语句 在access使用

数据如 1234d 2345p
要求按前部分的数字排序 字母不管

select * from 表 where 列1 like '%' order by ????
数据如 1234d 2345p 2367 8889 2389f

固定4个数字的话,截取左边4个字符 order by left( 列1 ,4 )

如果是以数字开头,不确定字母位数,用下面这个.
把表名和字段替换成你自己的.
SELECT * FROM 表名 ORDER BY isnull(STUFF( 列1 ,PATINDEX('%[a-z]%', 列1 ),LEN( 列1 ) - 1,''), 列1 )

字段内容可以为以数字开头的任意数字 + 英文字母(不区分大小写)组合:1234a,452EG,5694dfddfd,5621.应该可以实现你的需求了.
参考技术A --在临时表中新增一个排序字段,可实现最终排序
--以下虽然是在SQL Server中实现,但思路也可供参考
select IDENTITY(int,1,1) c1,id into #temp from t where ISNUMERIC(id)<>1 order by id;
insert #temp select ID from t where ISNUMERIC(id)=1 order by id;

select id from #temp order by c1;
参考技术B cint(列1) 参考技术C --在临时表中新增一个排序字段,可实现最终排序 --以下虽然是在SQL Server按照id排序的话结果应该是123abc 我想到的就是改变字符串长度比如

以上是关于sql 字符串 排序的主要内容,如果未能解决你的问题,请参考以下文章

sql排序,id本身为字符串,怎样转换为数字后排序

sql数字字符串排序

SQL 字符串按大小排序

SQL2000里面字符串排序

SQL 字符串排序问题

SQL 排序和连字符