Tsql T-SQL按空格排序

Tsql T-SQL按空格排序,tsql,sql-order-by,whitespace,Tsql,Sql Order By,Whitespace,我想问一下这个简单的ORDERBY(在T-SQL中)子句。 假设我们把这些瓦查尔放在一张桌子上。(该表包含ID、名称和其他列) 我们的目标是按升序对它们进行排序,但要使空格紧跟在这些名称之后,而不是继续这些名称。(我知道这听起来有点不合逻辑,但我需要所有的数据行——包括空格——表实际上有更多的列,我无法更改任何内容)。当然,这些字符的代码在字母表之前,但是如何欺骗它来产生这个输出呢 按名称从表顺序中选择名称 'Anna' 'Bert' 'Michael' 'Peter' '' '' '' ''

我想问一下这个简单的ORDERBY(在T-SQL中)子句。 假设我们把这些瓦查尔放在一张桌子上。(该表包含ID、名称和其他列)

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

按名称从表顺序中选择名称

'Anna'
'Bert'
'Michael'
'Peter'
''
''
''
''
''
谢谢大家!

您可以按顺序使用:

SELECT 
   name 
FROM 
   dbo.table 
ORDER BY 
   CASE WHEN name IS NULL OR name='' THEN 1 ELSE 0 END ASC
 , name ASC
此查询将首先将所有对象拆分为两个组:

  • 有名字
  • 无名

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

    哪个SQL版本?2005+?@PaN1C_Showt1Me:在2000年就已经存在了。然而,如果您使用SQLServer2000,您应该清楚地标记它,因为从那时起许多事情都发生了变化。
    SELECT 
       name 
    FROM 
       dbo.table 
    ORDER BY 
       CASE WHEN name IS NULL OR name='' THEN 1 ELSE 0 END ASC
     , name ASC