囲む SQLサーバーのスラッシュをエスケープする方法




vb net sql シングルクォーテーション エスケープ (3)

このコードを試してみるには:

'\ a \ b \ c'を選択

バックスラッシュ文字をエスケープする必要はありません。 しかし、バックスラッシュと改行文字の問題は問題であり、SQL Serverエンジンは単にそれを削除します。

文字列に一重引用符を付ける必要がある場合は、引用符文字を二重にする必要があります。

引用符で 'test:' 'を選択してください' - ok '

私は何らかの形で助けてくれることを願っています。

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では、バックスラッシュをエスケープする(または少なくとも特別に扱う)必要がある場所が実際に1つあります。

バックスラッシュが文字列リテラルの新しい行の直前にある場合、バックスラッシュと新しい行の両方が削除されます。

PRINT 'Foo\
Bar'

返品

FooBar

ここ記事は、これがTSQL自体ではなくクライアントツールの機能であることを示していますが、次のコードで同じ結果が得られるため、これは当てはまりません

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

バックスラッシュとそれに続くキャリッジリターンの文字列リテラルが実際に必要な場合は、それらを2倍にすることができます。

PRINT 'Foo\\

Bar'




tsql