ホームページ >データベース >mysql チュートリアル >Oracle SQL INSERT ステートメントでアンパサンド (&) をエスケープするにはどうすればよいですか?

Oracle SQL INSERT ステートメントでアンパサンド (&) をエスケープするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-24 13:01:08473ブラウズ

How to Escape Ampersands (&) in Oracle SQL INSERT Statements?

Oracle SQL でのアンパサンドを含む置換変数プロンプトの回避

Oracle SQL Developerの置換変数機能は、アンパサンド(&)を含むデータを挿入するときに問題を引き起こす可能性があります。 多くの場合、「置換値を入力してください」というプロンプトが表示されます。 アンパサンドはリテラル文字ではなく、変数インジケーターとして解釈されます。

URL 内にアンパサンドが含まれる次の例を考えてみましょう。

<code class="language-sql">http://www.netvibes.com/subscribe.php?type=rss&url=</code>

この URL を正しく挿入するには、アンパサンドをエスケープする必要があります。 1 つの方法は、アンパサンドの ASCII コードを表す CHR(38) 関数を使用する方法です:

<code class="language-sql">INSERT INTO agregadores_agregadores (idagregador, nombre, url) 
VALUES (2, 'Netvibes', 'http://www.netvibes.com/subscribe.php?type=rss' || CHR(38) || 'url=');</code>

これにより、リテラルのアンパサンドが同等の ASCII 文字に置き換えられ、置換変数の競合が防止されます。

または、以下を使用して置換変数の動作をグローバルに無効にすることもできます。

<code class="language-sql">SET DEFINE OFF;</code>

このコマンドを実行すると、後続のすべての SQL ステートメントでアンパサンドがリテラル文字として扱われます。 SET DEFINE OFF は、現在のセッション内の今後のすべてのクエリに影響することに注意してください。 したがって、後で置換変数が必要になった場合は、SET DEFINE ON; を使用してそれらを再度有効にする必要があります。

以上がOracle SQL INSERT ステートメントでアンパサンド (&) をエスケープするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。