sql >> データベース >  >> RDS >> Oracle

&を含む文字列を挿入する方法

    私はこれを忘れて、また戻ってきます!最善の答えは、これまでに提供された回答の組み合わせだと思います。

    まず、&はsqlplus / sqldeveloperの変数プレフィックスであるため、問題が発生します。これが表示された場合、変数名の一部であると予想されます。

    SET DEFINE OFFは、sqlplusの解釈とこの方法を停止します。

    しかし、sqlplus変数およびを使用する必要がある場合はどうなりますか? リテラルと文字?

    • 変数を機能させるには、SETDEFINEONが必要です
    • &の使用を回避するには、ESCAPEONを設定します。

    例:

    set define on
    set escape on
    
    define myvar=/forth
    
    select 'back\\ \& &myvar' as swing from dual;
    

    生産物:

    old   1: select 'back\\ \& &myvar' from dual
    new   1: select 'back\ & /forth' from dual
    
    SWING
    --------------
    back\ & /forth
    

    別のエスケープ文字を使用する場合:

    set define on
    set escape '#'
    
    define myvar=/forth
    
    select 'back\ #& &myvar' as swing from dual;
    

    特定のエスケープ文字を設定すると、「SP2-0272:エスケープ文字を英数字または空白にすることはできません」と表示される場合があります。これはおそらく、エスケープ文字がすでに定義されており、物事がひどく自己参照的になることを意味します。この問題を回避するためのクリーンな方法は、最初にエスケープを開始することです。

    set escape off
    set escape '#'
    


    1. *アラート*WindowsUpdateは純粋なAccessアプリケーションを壊します–修正が利用可能です

    2. 可用性グループのレプリカ同期の監視

    3. 集計関数なしのGROUPBY

    4. OracleのLikeとContains()の検索基準の違い