INSERT
オラクルでステートメントを実行しようとすると、ステートメントSQL Error: ORA-00917: missing comma
のように値があるため、エラーが発生しました。Alex's Tea Factory
INSERT
どうすれば逃げることができ'
ますか?
それを回避するには、引用符を2倍にします。
INSERT INTO TABLE_A VALUES ( 'Alex''s Tea Factory' );
SQLでは、引用符を別の引用符でエスケープします。
SELECT 'Alex''s Tea Factory' FROM DUAL
以下の例のようにESCAPEを使用できます
'_' ワイルドカード文字は正確に 1 文字に一致するために使用され、'%' は任意の文字の 0 回以上の出現に一致するために使用されます。これらの文字は SQL でエスケープできます。
SELECT name FROM emp WHERE id LIKE '%/_%' ESCAPE '/';
同じことがPL/SQL内でも機能します。
if( id like '%/_%' ESCAPE '/' )
これは、同様のパターンにのみ適用されます。たとえば、挿入では _ や % をエスケープする必要はありません。いずれにせよ、それらはプレーンな文字として使用されます。任意の文字列では、'' でエスケープする必要があるのは '' だけです。
あなたの質問は、文字列を連結して INSERT ステートメントを構築していることを意味します。文字列がユーザー入力から派生している場合、SQL インジェクション攻撃を受けやすくなるため、これは適切な選択ではないことをお勧めします。より良い選択は、パラメーター マーカーを使用し、値をマーカーにバインドすることです。検索するOracle parameter markers
と、特定の実装テクノロジに関する情報が見つかる可能性があります (例: C# と ADO、Java と JDBC、Ruby と RubyDBI など)。
共有してお楽しみください。