1

こんにちは私は現在、データベースがロット番号をソートする必要があるプロジェクトを行っています

prefix is nvarchar
lotnum is int
suffix is nvarchar

使用したロット番号コードを変換することができました

Select (case when prefix is null then '' else prefix end) +
CONVERT ( nvarchar , ( lotnumber ) ) +(case when suffix is null then '' else suffix end)
(values in the database are a1a,1a,1,2,100)

order by lotnumber私が得たとき

a1a
1a
1
2
100

次に、order byの前に付けて、この結果を取得します

1
a1a
1a
2
100

サフィックスも追加し、同じ結果を返します

次のように注文する必要があります

1
1a
2
100
a1a

誰かがこれについて私を助けてください

4

1 に答える 1

3

3 つの列すべてで並べ替えてみましたか?

ORDER BY prefix, lotnum, suffix

ところで、SQL Server を使用していることがわかります。移植性を高めるために、CASE/WHEN と CONVERT の代わりに COALESCE と CAST をプレフィックスとロットナムに使用することをお勧めします。完全なクエリは次のようになります。

SELECT
  COALESCE(prefix, '')
  + CAST(lotnum AS NVARCHAR)
  + COALESCE(suffix, '') AS lot_number
FROM
  YourTable
ORDER BY
  COALESCE(prefix, '')
  ,lotnum
  ,COALESCE(suffix, '')
于 2012-07-27T10:24:02.490 に答える