oracle 預設轉義字元 oracle轉義字元

2021-10-13 13:23:42 字數 3261 閱讀 8950

sql> select * from test where test like 'sdd=_%' escape '=';

test

sdd_kk

轉義字元為'=';

sql> select * from test where test like 'sdd/_%' escape '/';

test

sdd_kk

轉義字元為'/';

sql> select * from test where test like 'sddd_%' escape 'd';

未選定行

轉義字元為d,沒有實現轉義功能;

sql> select * from test where test like '%\_%' escape '\';

test

sdd_kk

查詢包含所有'_'的字段。

同理:通過這種方法查詢含有'%'的所有字段:

sql> select * from test where test like '%\%%' escape '\';

test

dffa%asfs

1%2345

1%54321

2%54321

%%54321

但是'&'不能通過轉義字元查詢:

sql> select * from test where test like '%\&%' escape'\';

select * from test where test like '%\&%' escape'\'

第 1 行出現錯誤:

ora-01424: 轉義符之後字元缺失或非法

可以通過另外的方式進行轉義:

sql> select ascii('&') from dual;

ascii('&')

sql> select * from test where test like '%'||chr(38)||'%';

test

a&b'''的轉義:

sql> select * from test where test like '%''%';

test

d'd特殊符號的資料的插入

sql> insert into test values('test&test');

輸入 test 的值: test

原值    1: insert into test values('test&test')

新值    1: insert into test values('testtest')          -雖然插入,但是資料不對。

已建立 1 行。

sql> show define

define "&" (hex 26)

sql> set define off

sql> show define

define off

sql> insert into test values('test&test');

已建立 1 行。

sql> show escape

escape off

sql> set escape on

sql> show escape

escape "\" (hex 5c)

sql> insert into test values('test\&test');

已建立 1 行。

sql> select * from test;

test

sdd_kk

d'ddfsfsa

dffa%asfs

1%2345

1%54321

2%54321

%%54321

a&btesttest

test

test&test

test&test

已選擇13行。

sql> commit;

提交完成。

sql> select * from test;

test

sdd_kk

d'ddfsfsa

dffa%asfs

1%2345

1%54321

2%54321

%%54321

a&btesttest

test

test&test

test&test

已選擇13行。

sql> insert into test values('test\%test');

已建立 1 行。

sql> insert into test values('test\_test');

已建立 1 行。

sql> insert into test values('test\'test);

insert into test values('test'test)

第 1 行出現錯誤:

ora-00917: 缺失逗號sql> insert into test values('test''test');

已建立 1 行。

sql> select * from test;

test

sdd_kk

d'ddfsfsa

dffa%asfs

1%2345

1%54321

2%54321

%%54321

a&btesttest

test

test&test

test&test

test%test

test_test

test'test

已選擇16行。

連線符『||』導致了新一輪的轉義:連線符號『||』左右的單引號沒有任何的關係,除非『||』是作為字串的一部分(這在動態sql中很常見)。

sql> select 'oracle'||'''' from dual;

'oracle'||''

oracle'

個人理解,'oracle'||'''' 後面的「''''」應該認為是乙個字串(即前後單引號,中間是「''」串,而中間又是密集單引號,因此第乙個為轉義功能)

sql> select 'oracle''''' from dual;

'oracle'''''

oracle''

對於第乙個,前兩個單引號配對,後面四個單引號按照上面的第一條原則分配,既:select 'oracle'||'''' from dual;

對於第二個,由於第二個單引號後面存在單引號,所以就不與第乙個配對,而是充當了轉義的角色。既:select 'oracle''''' from dual;

oracle 預設轉義字元 Oracle轉義字元

1 oracle 特殊字元 轉義 在plsql裡邊執行 update userinfo set pageurl myjsp?page 1 pagesize 10 where id test 1 update userinfo set pageurl myjsp?page 1 pagesize 10 ...

Oracle轉義字元

sql select from test test sdd kk d ddfsfsa dffa asfs 12345 1 2345 1 54321 2 54321 54321 a b 已選擇9行。其中包含特殊的字元分別為 有可能包含這些字元的資料含有錯誤,或者需要查詢包含這些字元的資料。sql se...

Oracle轉義字元

1 oracle 特殊字元 轉義 環境 oracle 9i plsql 在plsql裡邊執行 update userinfo set pageurl myjsp?page 1 pagesize 10 where id test 這條sql語句往資料庫的pageurl欄位放進去了乙個url位址,但是執...