如何在结果集中均匀分隔3个连接字段

时间:2012-09-23 22:11:00

标签: sql sql-server tsql concatenation

我将三个字段连接到一个字段中,但是当我运行查询时,结果集是正确的,但它们在一个字段内的间隔不均匀。如何整齐和正确地隔离它们。谢谢你的帮助。

以下是查询:

SELECT CONVERT(varchar(20),Book)+ Space(2) + '(' + CONVERT(varchar(30),Year)
+ ')' + Space(2) + '(' + CONVERT(varchar(30),Print) + ')' As  'Film Description', Genre,
Cost
FROM Film
Order By Year DESC, Book ASC

2 个答案:

答案 0 :(得分:0)

使用Convert(Char(代替Convert(Varchar( 变种人把空间剥掉了..

答案 1 :(得分:0)

由于VARCHAR忽略尾随空格,因此您需要使用不同的数据类型(例如CHAR)。其他一些评论:

  • 请谨慎使用yearprint等保留字作为列名
  • 小心使用'single quotes'作为别名分隔符([square brackets]更具有前瞻性,更难与字符串文字混淆)
  • 您应该使用架构前缀(例如dbo.Film
DECLARE @Film TABLE(Book VARCHAR(255), [Year] INT, [Print] VARCHAR(255));

INSERT @Film 
SELECT 'a', 2012, 'hello there this is at least 30 characters, right?'
UNION ALL 
SELECT 'this must be at least 30 characters too, right?', 2011, 'b';

SELECT CONVERT(CHAR(20), Book)
 + SPACE(2) 
 + '(' + CONVERT(CHAR(4),[Year]) + ')' 
 + SPACE(2) 
 + '(' + CONVERT(CHAR(30), [Print]) + ')' 
 As [Film Description]
FROM @Film
Order By [Year] DESC, Book;