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

OracleDatabaseでSETDEFINEOFFを使用する場合または使用する理由

    デフォルトでは、SQL Plusは「&」を置換文字列を開始する特殊文字として扱います。これにより、他の理由で「&」が含まれるスクリプトを実行するときに問題が発生する可能性があります。

    SQL> insert into customers (customer_name) values ('Marks & Spencers Ltd');
    Enter value for spencers: 
    old   1: insert into customers (customer_name) values ('Marks & Spencers Ltd')
    new   1: insert into customers (customer_name) values ('Marks  Ltd')
    
    1 row created.
    
    SQL> select customer_name from customers;
    
    CUSTOMER_NAME
    ------------------------------
    Marks  Ltd
    

    スクリプトに「&」文字を含むデータが含まれている(または含まれている可能性がある)ことがわかっていて、上記のような置換動作が望ましくない場合は、set define offを使用します。 スクリプトの実行中に動作をオフにするには:

    SQL> set define off
    SQL> insert into customers (customer_name) values ('Marks & Spencers Ltd');
    
    1 row created.
    
    SQL> select customer_name from customers;
    
    CUSTOMER_NAME
    ------------------------------
    Marks & Spencers Ltd
    

    set define onを追加することをお勧めします スクリプトの最後で、デフォルトの動作を復元します。



    1. MySQLでデフォルトの制約を追加する方法

    2. PHP/MySQLの特殊文字

    3. オンライン求人ポータルデータモデルの改善

    4. 異なるDBMS間のデータ移行