Rumah >pangkalan data >Oracle >Apakah watak melarikan diri dalam oracle
Escape aksara dalam Oracle: 1. Petikan tunggal, digunakan untuk memetik rentetan atau melarikan diri sendiri 2. Petikan berganda, digunakan untuk membungkus aksara format yang tidak sah 3. "&" Iaitu, simbol dan digunakan untuk menyambung dua escape sendiri; 4. Escape digunakan untuk menentukan simbol bukan khas sebagai watak melarikan diri.
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi Oracle 11g, komputer Dell G3.
Dilaksanakan dalam plsql:
Pernyataan sql ini meletakkan alamat url ke dalam medan pageurl pangkalan data, tetapi perlaksanaan tidak begitu ideal kerana terdapat oracle di dalamnya. Watak istimewa perlu dilepaskan, iaitu watak '&'.Bagaimana untuk menangani watak istimewa dalam contoh di atas? Dua kaedah:update userinfo set pageurl='myjsp?page=1&pagesize=10' where id='test'
1) kemas kini info pengguna setpageurl='myjsp?page=1'||'&'||'pagesize=10' di mana id='test'
2) kemas kini userinfo setpageurl='myjsp?page=1'||chr(38)||'pagesize=10' dengan id='test'
di mana || ialah tanda sempang, chr( 38 ) Ia selaras dengan transkod aksara ASCII.
Dalam plsql, anda juga boleh menetapkan define untuk mematikan aksara khas, dan anda juga boleh menggunakan show define untuk melihat beberapa aksara yang ditakrifkan khas.
2. Bagaimana untuk melarikan watak istimewa dalam oracle
Soalan: Bagaimana untuk melarikan diri garis bawah_
jieguo Keputusan menunjukkan lady_test, lady_test, lady1Keputusan yang betul hendaklah: lady_test, lady_testtidak termasuk lady1select * from ng_values where name like 'lady_%'
Sila berikan kaedah melarikan diri, 3ks
jawapan:
3.(Kaedah 1)
select ... from ... where ... like '/_%' escape '/';Contoh: masukkan aksara khas '&'
insert into t(col) values(chr(ascii('&'))) ;/1 baris dibuat(Kaedah 2)
SQL> SHOW DEFINE define "&" (hex 26) ? <--- DEFINE的default值是 ‘&’ SQL> SET DEFINE OFF SQL> SHOW DEFINE define OFF SQL> INSERT INTO <table_name> VALUES ('AT&T');1 baris dibuat.;Beberapa kaedah ujian:
SQL> SHOW ESCAPE escape OFF <--- ESCAPE的default值是 OFF SQL> SET ESCAPE ON SQL> SHOW ESCAPE escape "\" (hex 5c) SQL> INSERT INTO temp_table VALUES ('select * from emp where ename =\&1');1 baris dimasukkan
Mulakan watak melarikan diri dahulu
SELECT 'myjsp?page=1&pagesize=10' FROM dual; SELECT 'myjsp?page=1&pagesize=10' FROM dual; SQL> create table a (b varchar2(10)); Table created SQL> insert into a values('_a');tetapkan melarikan diri pada
SQL> select B from A where instr(b,'_a')>0; B ---------- _a select B from A where b like '%\_a%' escape '\'Perhatikan bahawa petikan berganda" tidak terlepas dalam Aksara Oracle, jadi ia boleh disimpan secara langsung tanpa melarikan diri dua fungsi dalam ORACLE: 1) memetik rentetan; 2) melarikan diri sendiri Apabila memetik rentetan, petikan tunggal muncul secara berpasangan; petikan mestilah berpasangan. adalah sebahagian daripada rentetan (yang sangat biasa dalam SQL dinamik 2. Tanda petikan berganda
select B from A where b like '%\_a%' escape '\'; select B from A where b like '%\_a%' escape '\';1) Secara umumnya, tanda petikan berganda dalam rentetan hanya dianggap sebagai aksara biasa Pada masa ini, tanda petikan berganda tidak perlu digandingkan:
2) Apabila muncul dalam rentetan format to_char, petikan berganda mempunyai fungsi khas. adalah untuk membungkus aksara format yang tidak sah untuk mengelakkan ORA-01821: format tarikh tidak dikenali Ralat
Dalam erti kata lain, selepas mengalih keluar petikan berganda dan aksara yang terkandung di dalamnya, apa yang tinggal harus menjadi rentetan format yang sah >to_char akan mengabaikan gandaan apabila memproses rentetan format:
Pilih To_Char(Sysdate, 'hh24"hour"mi"minit"ss"second"') Sebagai "Masa/Jam Semasa. Minute Second" From Dual;Output:09 jam 05 Minit 08 saat - aplikasi ini juga tersedia dalam alias Rentetan format ialah 'hh24"hour"mi"minit"ss" second"';Select 'abc' a,'' b, '''' c, ' '' ' d From Dual;
Selepas mengalih keluar petikan berganda, bakinya ialah 'hh24miss' ialah rentetan format yang sah.
Select 'name' || '''''' a, 'name''''' b From Dual; Output:name'' name''Tetapi walaupun anda benar-benar tidak mengetahui penggunaan petikan berganda, anda masih boleh mengendalikannya seperti ini, walaupun ia sedikit lebih menyusahkan:
Pilih To_Char(Sysdate, 'hh24 ') ||. 'Jam' ||. To_Char (Sysdate, 'mi') ||. To_Char(Sysdate, 'ss') ||. 09 jam, 05 minit dan 8 saat
3,& (dan simbol)
digunakan untuk mengenal pasti/menetapkan pembolehubah tersuai, diikuti dengan nama pembolehubah; perlu digunakan sebagai aksara, anda perlu menggunakan Chr(38), atau Sambung dua && (escape sendiri)Select 'hh24"小时""mi""分"""ss"秒"' Results From Dual; Output:hh24"小时""mi""分"""ss"秒"4, Escape (nyatakan watak melarikan diri)nyatakan a simbol bukan khas sebagai watak melarikan diri, kebanyakannya digunakan dalam melarikan diri kad bebas
Tutorial yang disyorkan: "
Tutorial Video Oracle"
Atas ialah kandungan terperinci Apakah watak melarikan diri dalam oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!