Sql 如何在EXEC中输出制表符[字符(9)]
我知道我可以做到以下几点:Sql 如何在EXEC中输出制表符[字符(9)],sql,sql-server,tsql,Sql,Sql Server,Tsql,我知道我可以做到以下几点: DECLARE @Tab CHAR(1) SET @Tab = CHAR(9) EXEC('xp_cmdshell ''echo ' + @Tab + 'Some text>> C:\test.txt'', NO_OUTPUT') 但是有没有一种方法可以在一行中实现呢?也就是说,不需要声明和设置选项卡,直接将其输出到EXEC?尝试以下操作: declare @str varchar(500)= 'xp_cmdshell ''echo '+ char
DECLARE @Tab CHAR(1)
SET @Tab = CHAR(9)
EXEC('xp_cmdshell ''echo ' + @Tab + 'Some text>> C:\test.txt'', NO_OUTPUT')
但是有没有一种方法可以在一行中实现呢?也就是说,不需要声明和设置选项卡,直接将其输出到EXEC
?尝试以下操作:
declare @str varchar(500)= 'xp_cmdshell ''echo '+ char(9)+' Some text>>
C:\test.txt'', NO_OUTPUT'
exec(@str)
在一行中,但不删除声明。EXEC和sp_executesql不允许在命令或参数中使用函数调用。因此,您需要声明一个字符串变量以在命令中插入CHAR(9):
exec('DECLARE @str varCHAR(200);
set @str = ''xp_cmdshell ''''echo '' + CHAR(9) + ''Some text>> C:\test.txt'''', NO_OUTPUT'';
EXEC(@str)');
你想用SET@Tab=CHAR(9)实现什么?仅空格??是否有理由不能在字符串中键入制表符?只要
echo
后面的选项卡前面有一个空格,我就觉得这很有效。我尝试过:EXEC('xp\u cmdshell“echo Some text>>C:\test.txt',NO_OUTPUT')
它将行输出到最左边。没有空间,没有标签。编辑:StackOverflow正在剥离选项卡,但这是一个错误text@Danny-哪一版本的SQL server?@Ed Microsoft SQL server Express Edition with Advanced Services;版本10.50.1600.1;MS SQL 2008 R20“CHAR”附近的语法不正确。应为全局变量、字符串、文本或变量。这与我发布的原始代码没有什么不同,但由于声明中的设置,它不再与SQL 2005兼容。我试图在EXEC行中实现这一切,而不必声明更多变量。我已将您的答案标记为已接受的答案,但我决定保持代码不变。我试图让代码更干净,而不必声明变量,但这似乎是不可能的。谢谢你的帮助!