在字段裡查詢'%',涉及到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 ...