意外的DBA,在这里。我正在查看由过去的DBA撰写的查询,该DBA不再与公司合作,我发现了一些我认为奇怪的东西;也许我只是无知。 SQL用于收集有关DB的信息并提供超链接和文件位置。它使用一个变量。下面是有问题的代码,它是查询的开头。
declare @crlf varchar(2)
set @crlf = char(13)+char(10)
所以,对我来说,看起来变量被声明为varchar,但是它被设置为两个char数据类型的串联?这让我感到困惑,因为:
A)为什么他不只是将变量设置为他想要开始的数据类型? B)我没有意识到你可以将变量设置为数据类型而不是值 C)我也不知道你可以将数据类型连接在一起(或者在这种情况下添加,可能是?)。这对我来说根本没有意义。
对此有何见解?
答案 0 :(得分:3)
他只是将其设置为回车符(CR)和新换行符(LF),因此变量名称为crlf
。您可以使用相同的方法将其设置为两个字母...
declare @crlf varchar(2)
set @crlf = char(88)+char(89)
select @crlf
<强>结果
XY
正如评论中所指出的,这是调用CHAR()
函数而不是分配一个字符串文字的数据类型。相反的是ASCII()
函数。