SQL 字母数字混合型字段 按里面的数字排序

时间:2010-04-23 18:18:00 

网上找了很多。貌似没什么好的解决办法。

自己参考了下。把它直接整成一条SQL语句了。

不过字段的格式只允许前面或者后面有字符。中间不允许出现字符

字段如下。前面可能有字符也可能没有,后面也一样。我们要的结果是:按字段里面的数字升序排列。

正常情况下。我们只要 order by DishesEnname 貌似就可以。但如果字段值是这样子的:"L101"或者"101"

那结果就不是我们预期的了。因为它把"L101"或者"101"排到最前面去了。而我们要的结果是排在后面的。

解决的SQL语句如下:

select DishesEnname,Cast((left(right(DishesEnname,len(DishesEnname)-patindex('%[0-9]%',DishesEnname)+1)+'a',patindex('%[a-z,A-Z]%',right(DishesEnname,len(DishesEnname)-patindex('%[0-9]%',DishesEnname)+1)+'a')-1)) as int) from tdishes
where DishesDepartmentNo=1590
order by Cast((left(right(DishesEnname,len(DishesEnname)-patindex('%[0-9]%',DishesEnname)+1)+'a',patindex('%[a-z,A-Z]%',right(DishesEnname,len(DishesEnname)-patindex('%[0-9]%',DishesEnname)+1)+'a')-1)) as int)

结果图如下:

 



结果正是我们所需要的。

具体的可以拿两个小例子来看下。

去掉左侧的字母:
declare @t as varchar(200)
select @t='1234567aa'
select right(@t,len(@t)-patindex('%[0-9]%',@t)+1)

 

去掉右侧的字母:
declare @tt varchar(200)
select @tt='123456'+'a'
select left(@tt,patindex('%[a-z,A-Z]%',@tt)-1)

标签:sql,字符串,数字,排序
0
投稿

猜你喜欢

  • div遮罩层实现实例代码

    2009-01-11 18:38:00
  • 超级连接的title提示中如何换行实现多行显示

    2008-03-07 15:57:00
  • jQuery使用手册--核心篇(Core)

    2007-11-22 22:05:00
  • 用户体验设计中用到的统计学方法

    2009-07-12 08:26:00
  • VBScript中LBound函数和UBound函数的用法

    2008-06-27 13:02:00
  • 网站导航设计的6大分类

    2010-07-12 18:46:00
  • asp使用shotgraph组件生成数字和字母验证码

    2007-09-26 12:26:00
  • 将数据从MySQL迁移到 Oracle的注意事项

    2008-12-03 15:41:00
  • ASP中将Excel数据导入到Access

    2009-02-02 09:15:00
  • window安装mysql(zip、noinstall)

    2009-10-17 21:10:00
  • ORACLE常用数值函数、转换函数、字符串函数

    2009-11-21 09:31:00
  • ASP进阶教程Ⅶ:留言簿设置密码验证

    2008-10-13 09:02:00
  • 缓存是如何实现的?

    2009-11-01 15:35:00
  • 发现一个不错的11px字体:PMingLiu

    2008-09-06 12:49:00
  • AJAX无刷新验证用户名是否存在

    2007-08-10 10:07:00
  • Javascript DOM 编程实例讲解--仿LightBox效果提示框

    2008-05-01 13:25:00
  • ASP模拟MVC模型的编程方式

    2008-10-15 14:51:00
  • 960 时代的终结

    2011-01-11 19:24:00
  • 利用Google Ajax Library API加速常用js类库的载入

    2008-06-17 17:44:00
  • sql 常用技巧整理

    2011-11-03 17:10:14
  • asp之家 网络编程 m.aspxhome.com