声明一个变量,然后设置为数据类型?

时间:2017-11-15 14:58:26

标签: sql-server-2008 tsql ssms

意外的DBA,在这里。我正在查看由过去的DBA撰写的查询,该DBA不再与公司合作,我发现了一些我认为奇怪的东西;也许我只是无知。 SQL用于收集有关DB的信息并提供超链接和文件位置。它使用一个变量。下面是有问题的代码,它是查询的开头。

 declare @crlf varchar(2)
 set @crlf = char(13)+char(10)

所以,对我来说,看起来变量被声明为varchar,但是它被设置为两个char数据类型的串联?这让我感到困惑,因为:

A)为什么他不只是将变量设置为他想要开始的数据类型? B)我没有意识到你可以将变量设置为数据类型而不是值 C)我也不知道你可以将数据类型连接在一起(或者在这种情况下添加,可能是?)。这对我来说根本没有意义。

对此有何见解?

1 个答案:

答案 0 :(得分:3)

他只是将其设置为回车符(CR)和新换行符(LF),因此变量名称为crlf。您可以使用相同的方法将其设置为两个字母...

 declare @crlf varchar(2)
 set @crlf = char(88)+char(89)

 select @crlf

<强>结果

XY

正如评论中所指出的,这是调用CHAR()函数而不是分配一个字符串文字的数据类型。相反的是ASCII()函数。

Reference ASCII Table