T-SQL按空白顺序排序

时间:2012-10-31 08:03:49

标签: tsql sql-order-by whitespace

我想问你这个简单的ORDER BY(在T-SQL中)子句。 假设我们在表格中有这些变量。 (该表有ID,名称,其他列)

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

目标是按升序排序,但是这样的空格会跟随而不是继续这些名称。 (我知道这听起来有点不合逻辑,但我需要所有的数据行 - 包括空格 - 表实际上有更多的列,我无法改变任何东西)。当然,这些字符的代码在字母表之前,但是如何欺骗它来产生这个输出?

SELECT name FROM table ORDER BY name

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

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以在ORDER BY中使用CASE

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

此查询将首先分为两组:

  1. 姓名
  2. 没有名字
  3. 然后它将由第一组首先排序,然后由名称本身排序。然后它会附加没有名字的小组。