由于VARCHAR忽略尾随空格,您需要使用不同的数据类型(例如CHAR)。其他一些评论:
- 小心使用保留字,例如
year和print作为列名
- 小心使用
'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;