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