已经看到了其他的答案。决定采取不同的路线。有点比较冗长,但是这个解决方案的好处是你最终会对实际的数字进行排序,并且首先对'J'数字进行排序。
SELECT
-- Get the first numeric component
CAST (
SUBSTRING(
productnumber,
CHARINDEX('J', productnumber, 1) + 1,
CHARINDEX('M', productnumber, 1) - CHARINDEX('J',productnumber, 1) - 1)
AS INT
) AS FirstSort,
-- Get the second numeric component
CAST (
SUBSTRING(
productnumber, CHARINDEX('M', productnumber, 1) + 1, LEN(productnumber))
AS INT
) AS SecondSort,
productnumber
FROM
productnumbers
ORDER BY
FirstSort,
SecondSort
DEMO
http://sqlfiddle.com/#!6/fd371/2
哪里'J12M3'在第二个列表从何而来?这不在你的第一个列表中。 –