我尝试使用sql查询连接两个字符串。以下是我的代码无效。
SELECT TOP 100 CONCAT('James ','Stephen') AS [Column1]
FROM [dbo].[ORDERS]
Group BY ()
ORDER BY CONCAT('James ','Stephen') ASC
如果我在Order by子句中使用[Column1]
而不是CONCAT('James ','Stephen')
,它似乎有效。
SELECT TOP 100 CONCAT('James ','Stephen') AS [Column1]
FROM [dbo].[ORDERS]
Group by ()
ORDER BY [Column1] ASC
任何人都可以解释一下,为什么第一个查询不起作用?
答案 0 :(得分:0)
可以将排序列指定为名称或列别名,或者表示选择列表中列位置的非负整数。
可以指定多个排序列。列名必须是唯一的。 ORDER BY子句中的排序列的序列定义了排序结果集的组织。也就是说,结果集按第一列排序,然后该排序列表按第二列排序,依此类推。
但是,在第一个查询中,您既未指定名称或列别名,也未指定选择列表中列的位置
答案 1 :(得分:0)
ORDER BY子句将与underlyring表中的列一起使用。你不能按常数排序。
文档
中对此进行了解释指定要对查询结果进行排序的列或表达式 组。可以将排序列指定为名称或列别名,或者a 表示列中位置的非负整数 选择清单。
请注意,您可以使用表达式,例如ORDER BY CONCAT(field1,field2),但尝试按硬编码字符串排序是没有意义的,这对于每条记录显然都是相同的。
你可以通过引用别名来解决这个问题,但这不是很有用。