如何在EXEC中输出选项卡[CHAR(9)]

Dan*_*ett 5 sql t-sql sql-server

我知道我可以做到以下几点:

DECLARE @Tab CHAR(1)
SET @Tab = CHAR(9)
EXEC('xp_cmdshell ''echo ' + @Tab + 'Some text>> C:\test.txt'', NO_OUTPUT')
Run Code Online (Sandbox Code Playgroud)

但有没有办法在一行中做到这一点?即删除需要声明和设置选项卡,并直接输出EXEC

val*_*lex 5

在一行但没有删除声明.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)');
Run Code Online (Sandbox Code Playgroud)