Sql server “对混合值字符串排序”;以数字表示;

Sql server “对混合值字符串排序”;以数字表示;,sql-server,tsql,sorting,Sql Server,Tsql,Sorting,我正在寻找一种对门牌号进行排序的方法。数字以字符串形式存储,因为大多数数字都是数字,而有些数字会附加一个字母。例如: 1002 29C 一, 205 105A 是否有办法按照以下要求订购 一, 29C 105A 205 1002 以下是您想要的:我希望您使用的是SQL SERVER select * from tbl order by case when PATINDEX('%[^0-9]%',val) = 0 THEN val ELSE cast(Left

我正在寻找一种对门牌号进行排序的方法。数字以字符串形式存储,因为大多数数字都是数字,而有些数字会附加一个字母。例如:

  • 1002
  • 29C
  • 一,
  • 205
  • 105A
是否有办法按照以下要求订购

  • 一,
  • 29C
  • 105A
  • 205
  • 1002

    • 以下是您想要的:我希望您使用的是
      SQL SERVER

      select * from tbl order by 
      case when 
          PATINDEX('%[^0-9]%',val) = 0 
      THEN 
          val
      ELSE
          cast(Left(val,PATINDEX('%[^0-9]%',val)-1) as int) 
      END
      
      另一种方法

      select * from tbl order by
      stuff(val+'a',patindex('%[^0-9]%',val+'a'),len(val),'')*1
      

      是在表中还是什么…?对不起,是的,这些是表中的值。您使用的是Sql Server、MySql、Oracle还是什么…?好的..然后我刚刚发布了答案。。