0

この単純なORDERBY(T-SQLの場合)句についてお聞きしたいと思います。これらのvarcharがテーブルにあるとしましょう。(テーブルにはID、名前、その他の列があります)

'Peter'
''
''
'Anna'
'Michael'
'Bert'
''
''
''

目標は、それらを昇順で並べ替えることですが、空白がこれらの名前の後に続き、これらの名前の前に進まないようにすることです。(少し非論理的に聞こえることは知っていますが、空白を含むすべてのデータ行が必要です。テーブルには実際にはより多くの列があり、何も変更できません)。もちろん、これらの文字のコードはアルファベットの前にありますが、この出力を生成するためにそれをだますにはどうすればよいですか?

SELECT name FROM table ORDER BY name

'Anna'
'Bert'
'Michael'
'Peter'
''
''
''
''
''

ありがとうございました !

4

1 に答える 1

1

あなたはで使用することができCASEますORDER BY

SELECT 
   name 
FROM 
   dbo.table 
ORDER BY 
   CASE WHEN name IS NULL OR name='' THEN 1 ELSE 0 END ASC
 , name ASC

このクエリは、最初にすべてを2つのグループに分割します。

  1. 名前で
  2. 名前なし

次に、最初に最初のグループで並べ替え、次に名前自体で並べ替えます。次に、名前なしでグループを追加します。

于 2012-10-31T08:06:28.200 に答える