如何在SQL Server中转义斜杠

时间:2011-05-26 05:19:34

标签: sql sql-server tsql

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。上述错误可能是因为我无法转义\字符。

4 个答案:

答案 0 :(得分:20)

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

DECLARE @Query nvarchar(max)
SET @Query ='DECLARE @Test nvarchar(max)
SELECT @Test = ''\a\b\c''
SELECT @Test'
PRINT @Query
exec sp_executesql @Query

答案 1 :(得分:12)

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

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

PRINT 'Foo\
Bar'

返回

FooBar

article here表示这是客户端工具的一个功能,而不是TSQL本身,但我不相信这是因为以下代码具有相同的结果

DECLARE @X VARCHAR(100) = 'PRINT ''Foo\' + CHAR(13) + CHAR(10) + 'Bar'' '
EXEC(@X)

如果你确实需要一个带有反斜杠后跟回车的字符串文字,你可以加倍。

PRINT 'Foo\\

Bar'

答案 2 :(得分:0)

如果你想测试试试这段代码:

选择' \ a \ b \ c'

没有必要逃避反斜杠字符。但反斜杠加换行字符的问题是一个问题,而Sql Server引擎只是将其删除了。

如果你需要在字符串上加一个引号,那么你需要加倍引号字符:

选择'测试:''在引号'' - 好的'

希望我能以某种方式帮助你。

答案 3 :(得分:0)

如果您使用的是SQL Server 2016或更高版本,则可以使用STRING_ESCAPE()使用转义序列强制转换这些字符串。

STRING_ESCAPE( text , type )  

引用:https://docs.microsoft.com/en-us/sql/t-sql/functions/string-escape-transact-sql?view=sql-server-ver15