1
 J12M1
 J12M14
 J12M15
 J12M18
 J12M2
 J12M21
 J12M22
 J12M23
 J12M24
 J12M25
 J12M26
 J12M27
 J12M28
 J12M29
 J12M35
 J12M36
 J12M39

しかし、私の必要性は

 J12M1
 J12M2
 J12M3

クエリでできること

select productnumber from vt_fe_product order by productnumber
4

5 に答える 5

2

先頭にゼロを付けることができます:

SELECT 
   productnumber 
FROM   
   vt_fe_product 
ORDER BY 
   Right( '0000000000' + productnumber, 10 ) 

(から: https://stackoverflow.com/a/3326371/284240 )

デモ

結果:

PRODUCTNUMBER
J12M1
J12M2
J12M14
J12M15
J12M18
J12M21
J12M22
J12M23
J12M24
J12M25
J12M26
J12M27
J12M28
J12M29
J12M35
J12M36
J12M39
于 2013-02-08T11:08:33.297 に答える
1

追加の LEN 関数を使用してみる必要があるのではないでしょうか?

SELECT ProductName
FROM
(
 SELECT 
 'J12M1' AS ProductName
 UNION ALL
 SELECT 
 'J12M14' AS ProductName
 .......................
 UNION ALL
 SELECT 
 'J12M24' AS ProductName
 UNION ALL
 SELECT 
 'J12M25' AS ProductName
 UNION ALL
 SELECT 
 'J12M35' AS ProductName
 UNION ALL
 SELECT 
 'J12M36' AS ProductName
 UNION ALL
 SELECT 
 'J12M39' AS ProductName
) AS Products
ORDER BY LEN(ProductName), ProductName
于 2013-02-08T11:14:26.413 に答える
0

この方法で注文できます:-

select product_number from vtfe_product order by CONVERT(int, substring(product_number, 5, len(product_number) ) );

于 2013-02-08T11:24:58.903 に答える
0

すでに他の回答を見ました。別のルートを取ることにしました。もう少し冗長ですが、このソリューションの良い点は、実際の数値でソートすることになり、最初に「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

デモ

http://sqlfiddle.com/#!6/fd371/2

于 2013-02-08T11:27:18.343 に答える
0

productnumber 形式が明確に定義されている場合 (つまり、常に「J12M」の後に数字が続く場合)、「固定」部分を削除して、並べ替えの数値部分をキャストできます。次のようなもの:

ORDER BY CONVERT(int, REPLACE(productnumber, 'J12M', ''))
于 2013-02-08T11:10:21.113 に答える