如何在SQL Server中转义斜杠

Ash*_*pta 20 sql t-sql sql-server

DECLARE @Query nvarchar(max)
SET @Query ='DECLARE @Test nvarchar(max)
SELECT @Test = ''\a'\b'\c''
SELECT @Test
PRINT @Query
exec sp_executesql @Query
Run Code Online (Sandbox Code Playgroud)

我想把输出作为\ a\b\c.上面的错误可能是因为我无法转义\字符.

Mit*_*eat 21

您不需要转义反斜杠(只有内部单引号):

DECLARE @Query nvarchar(max)
SET @Query ='DECLARE @Test nvarchar(max)
SELECT @Test = ''\a\b\c''
SELECT @Test'
PRINT @Query
exec sp_executesql @Query
Run Code Online (Sandbox Code Playgroud)


Mar*_*ith 12

实际上有一个地方需要在SQL Server中转义(或至少特别处理)反斜杠.

当反斜杠紧接在字符串文字中的新行之前时,反斜杠和新行都将被删除.

PRINT 'Foo\
Bar'
Run Code Online (Sandbox Code Playgroud)

返回

FooBar
Run Code Online (Sandbox Code Playgroud)

这里的文章指出,这是客户端工具,而不是TSQL本身的功能,但我不相信这是事实如下面的代码有相同的结果

DECLARE @X VARCHAR(100) = 'PRINT ''Foo\' + CHAR(13) + CHAR(10) + 'Bar'' '
EXEC(@X)
Run Code Online (Sandbox Code Playgroud)

如果您确实需要带有反斜杠后跟回车符的字符串文字,则可以将它们加倍.

PRINT 'Foo\\

Bar'
Run Code Online (Sandbox Code Playgroud)