无法使用SQL Server 2008获得正确的排序

时间:2016-06-06 15:57:41

标签: sql sql-server-2008

我有一张表格,包括12X90,12X120,12X160等等。

“X”之后的数字是权重。我需要仅使用前导零填充权重,以便90变为090.正常排序将使90最后而不是第一,我需要按重量正确排序列表。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

使用charindex获取列中X之后的数字,并按该数字排序。

select * from tablename
order by cast(case when charindex('X',col) > 0 then substring(col,charindex('X',col)+1,len(col)) 
         else col end as numeric)

如果还应考虑X之前的字符串进行排序,请使用

select * from tablename
order by 
 cast(case when charindex('X',col) > 0 then substring(col,1,charindex('X',col)-1) 
 else col end as numeric)
,cast(case when charindex('X',col) > 0 then substring(col,charindex('X',col)+1,len(col)) 
 else col end as numeric)

Sample demo

答案 1 :(得分:0)

使用交叉申请

let myPattern = "(?<=\\S)'(?=\\S)"