0

我想问你这个简单的 ORDER BY (in T-SQL) 子句。假设我们在一个表中有这些 varchars。(表有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

该查询首先将全部分成两组:

  1. 有名字
  2. 没有名字

然后它将首先按第一组排序,然后按名称本身。然后它将附加没有名称的组。

于 2012-10-31T08:06:28.200 回答