如何在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
我正在尝试输出为\\ a \\ b \\ c。上面的错误可能是因为我无法转义\\字符。     
已邀请:
您不需要转义反斜杠(仅内部单引号):
DECLARE @Query nvarchar(max)
SET @Query =\'DECLARE @Test nvarchar(max)
SELECT @Test = \'\'\\a\\b\\c\'\'
SELECT @Test\'
PRINT @Query
exec sp_executesql @Query
    
实际上,在SQL Server中确实有一个地方需要转义反斜杠(或至少要特别处理)。 当反斜杠紧接在字符串文字中的新行之前时,反斜杠和新行都将被删除。
PRINT \'Foo\\
Bar\'
退货
FooBar
这里的文章表明这​​是客户端工具的功能,而不是TSQL本身,但是我不相信这种情况,因为以下代码具有相同的结果
DECLARE @X VARCHAR(100) = \'PRINT \'\'Foo\\\' + CHAR(13) + CHAR(10) + \'Bar\'\' \'
EXEC(@X)
如果您实际上需要带反斜杠的字符串文字,然后再使用回车,则可以将它们加倍。
PRINT \'Foo\\\\

Bar\'
    
如果要测试,请尝试以下代码: 选择\'\\ a \\ b \\ c \' 不必逃脱反斜杠字符。但是反斜杠和换行符的问题是一个问题,而Sql Server引擎只是将其切掉了。 如果需要在字符串上加上单引号,则需要将双引号字符加倍: 选择\'test:\'\'用引号\'\'-确定\' 希望我能以某种方式提供帮助。     

要回复问题请先登录注册