在您的字符串函数中
ORDER BY仅删除数字。这样的事情应该起作用:
SELECt colFROM tableORDER BY CAST(CASE WHEN ISNUMERIC(SUBSTRINg(col,4,20)) = 1 THEN SUBSTRINg(col,4,20) ELSE LEFt(SUBSTRINg(col,4,20),CHARINDEX('.',SUBSTRINg(col,4,20),0)-1) END AS NUMERIC)这将首先删除
IS-和检查字符串的其余部分是否为数字。如果是这样,它将保留小数位数,否则将删除
.和后面的字母字符。
假设在数字小数位的情况下,您预期的顺序为:
IS-123.AIS-123.1IS-123.2
如果您不关心小数点/句号后面的内容,则只需:
ORDER BY CAST(LEFt(SUBSTRINg(col,4,20),CHARINDEX('.',SUBSTRINg(col,4,20),0)-1) AS NUMERIC)


