有没有办法从T-SQL命令中删除空格并仍然执行它们?

Wey*_*ani 1 sql t-sql sql-server sql-injection

我正在尝试执行命令,但我需要删除空格.

这是我想要执行的命令,但它有两个空格:

DROP TABLE Table_1
Run Code Online (Sandbox Code Playgroud)

我想要做的是将其转换为没有空格的形式.我以为我可以使用连接和CHAR字符串函数来生成要执行的字符串:

'DROP'+CHAR(32)+'TABLE'+CHAR(32)+'Table_1'
Run Code Online (Sandbox Code Playgroud)

我试过这个并将它传递给EXEC,但这显然是无效的:

';EXEC('DROP'+CHAR(32)+'TABLE'+CHAR(32)+'Table_1');--
Run Code Online (Sandbox Code Playgroud)

然后我考虑在@declaring临时变量的许多行上构造字符串,但为此我似乎再次需要空格.
有办法做到这一点吗?

Cri*_*scu 15

您可以使用空的多行注释而不是空格:

DROP/**/TABLE/**/Table_1
Run Code Online (Sandbox Code Playgroud)

它会工作正常.

  • +1我认为没有任何空格字符就不可能. (11认同)
  • 很好 - 我会记住,不知道什么时候我可能需要它,但有趣的是 (3认同)