Oracle中轉義字元總結

2021-07-26 23:13:41 字數 3800 閱讀 8596

在字段裡查詢'%',涉及到oracle的轉義字元,現總結如下:

sql> select * from test;

test

--------------------

sdd_kk

d'ddfsfsa

dffa%asfs

12345

1%2345

1%54321

2%54321

%%54321

a&b

已選擇9行。

其中包含特殊的字元分別為%,_,&,有可能包含這些字元的資料含有錯誤,或者需要查詢包含這些字元的資料。

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 '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('&')

----------38

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

12345

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

12345

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

12345

1%2345

1%54321

2%54321

%%54321

a&btesttest

test

--------------------

test&test

test&test

test%test

test_test

test'test

已選擇16行。

C 中轉義字元

c 中轉義字元分2中,一種是 一種是 轉義字元 字元名稱 單引號 雙引號 反斜槓 0 空字元 a 警報符 b 退格 f 換頁 n 換行 r 回車 t 水平製表 v 垂直製表 verbatim字串 對於verbatim字串,編譯 器會嚴格按照原樣對其進行解釋。也就是說,即使這個字串跨越多行,或是包含轉...

C 中轉義字元

c 中轉義字元 c 中轉義字元分2中,一種是 一種是 符號在c 中有兩個作用 作用1 在字串的前面加 表示取消字串中的轉義 例如 string path d root subdir 作用2 如果使用者定義的物件名和系統關鍵字衝突,可以在變數前面加入 例如 string class this is a...

常見C中轉義字元

所有的ascii碼都可以用 加數字 一般是8進製數字 來表示。而c中定義了一些字母前加 來表示常見的那些不能顯示的ascii字元,如 0,t,n等,就稱為轉義字元,因為後面的字元,都不是它本來的ascii字元意思了。轉義字元 意義 ascii碼值 十進位制 a 響鈴 bel 007 b 退格 bs ...