insert
SQL Server 9 のテーブルにテキスト データを挿入しようとしています。
テキストには一重引用符が含まれます'
。
どうすればそれを回避できますか?
2 つの単一引用符を使用してみましたが、エラーが発生しました。
例えば。insert into my_table values('hi, my name''s tim.');
insert
SQL Server 9 のテーブルにテキスト データを挿入しようとしています。
テキストには一重引用符が含まれます'
。
どうすればそれを回避できますか?
2 つの単一引用符を使用してみましたが、エラーが発生しました。
例えば。insert into my_table values('hi, my name''s tim.');
一重引用符を別の一重引用符でエスケープしてもうまくいかない場合 (私の最近のREPLACE()
クエリではうまくいかなかったように)、SET QUOTED_IDENTIFIER OFF
クエリの前に使用してから、クエリのSET QUOTED_IDENTIFIER ON
後に使用できます。
例えば
SET QUOTED_IDENTIFIER OFF;
UPDATE TABLE SET NAME = REPLACE(NAME, "'S", "S");
SET QUOTED_IDENTIFIER ON;
-- set OFF then ON again
私たちの多くは、一重引用符をエスケープする一般的な方法は、以下のように簡単に二重にすることであることを知っています.
PRINT 'It''s me, Arul.';
一重引用符をエスケープする別の方法をいくつか見ていきます。
1.ユニコード文字
39 はシングル クォーテーションの UNICODE 文字です。したがって、以下のように使用できます。
PRINT 'Hi,it'+CHAR(39)+'s Arul.';
PRINT 'Helo,it'+NCHAR(39)+'s Arul.';
2.QUOTED_IDENTIFIER
もう 1 つの簡単で最良の代替ソリューションは、QUOTED_IDENTIFIER を使用することです。QUOTED_IDENTIFIER が OFF に設定されている場合、文字列を二重引用符で囲むことができます。このシナリオでは、一重引用符をエスケープする必要はありません。したがって、この方法は、一重引用符で多くの文字列値を使用する場合に非常に役立ちます。列の値に一重引用符が含まれる非常に多くの行の INSERT/UPDATE スクリプトを使用する場合に非常に役立ちます。
SET QUOTED_IDENTIFIER OFF;
PRINT "It's Arul."
SET QUOTED_IDENTIFIER ON;
結論
上記の方法は、AZURE とオンプレミスの両方に適用できます。
見積もりを2倍にするとうまくいくはずだったので、うまくいかなかったのは独特です。ただし、別の方法として、文字列を一重引用符ではなく二重引用符で囲みます。つまり、
insert into my_table values("hi, my name's tim."
);
これはうまくいくはずです
DECLARE @singleQuote CHAR
SET @singleQuote = CHAR(39)
insert into my_table values('hi, my name'+ @singleQuote +'s tim.')
挿入するものの前に ' を挿入するだけです。sqlServer のエスケープ文字のようになります
例: フィールドが as の場合、I'm fine . 次のことができます: UPDATE my_table SET 行 ='I'''' 大丈夫です。';