2017-02-22 9 views
0

テーブルの列がvarchar2データ型のテーブルを更新する必要があり、列の値を'%'で更新する必要があります。例えば特殊文字 '%'を使用して、更新ステートメントに文字列を追加します

-

create table test (id number, name varchar2(20)); 

insert into test values (1, 'smith'); 
insert into test values (2, 'allen'); 

今、私たちはスミスの「%」にNAME列の値を更新する必要があり

だから、文字列内の単一引用符をも含むべきです。

私はスミス%にそれを更新することができる午前しかし、それはスミスの「%」でなければなりません

update test 
    set name = 'smith'||'''%''' 
where id = 1; 

SQL Error: ORA-00911: invalid character

+0

アップデートでAFAIKが失敗してはなりません。これが実行した実際のクエリだと確信していますか? –

+0

私は '%'はその文字ではないと思う||それは私のために働いた – Viplock

+0

です。 @TimBiegeleisenは正しいです。あなたは本当にあなたはクエリを実行してもよろしいですか? – pablomatico

答えて

0

実際にあなたの文は、私はちょうど私のデータベースでそれをテストし、動作するはずです。

update test 
    set name = concat('smith', '''%''') 
where id = 1; 
1

SQL> set define off;

あなたのクエリはSQLPlusをで完璧に動作

how-to-enter-special-characters-like-in-oracle-database

+1

これは%の処理方法には影響しません。 OPの質問にアンパサンドはありません。 –

+0

はすべて特殊文字の下にあります –

+1

'set define off'は'% '記号とは関係ありません。 –

1

このリンクを確認します。

SQL> update test 
    2 set name = 'smith'||'''%''' 
    3 where id = 1; 

1 row updated. 

SQL> select * from test; 

     ID NAME 
---------- -------------------- 
     1 smith'%' 
     2 allen 

これは引用符を倍にする必要がなくなり、別の方法かもしれない:

SQL> update test 
    2 set name = 'allen'|| q'['%']' 
    3 where id = 2; 

1 row updated. 

SQL> select * from test; 

     ID NAME 
---------- -------------------- 
     1 smith'%' 
     2 allen'%' 

また、||

SQL> update test 
    2 set name = concat(name, q'['%']') 
    3 where id = 1; 

1 row updated. 

SQL> select * from test; 

     ID NAME 
---------- -------------------- 
     1 smith'%''%' 
     2 allen'%' 
関連する問題