Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在EXEC中输出制表符[字符(9)]_Sql_Sql Server_Tsql - Fatal编程技术网

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行中实现这一切,而不必声明更多变量。我已将您的答案标记为已接受的答案,但我决定保持代码不变。我试图让代码更干净,而不必声明变量,但这似乎是不可能的。谢谢你的帮助!