查詢語句中escape的轉義字元
今天進行一個查詢時發現查詢的結果不太對:
SQL> select text from user_source where text like '%_32_%';
SQL> select text from user_source where text like '%_32_%';
TEXT
--------------------------------------------------------------------------------
||' partition p32 values less than ('||'''120410'''||'),'
-- Created : 2012/7/20 14:55:32
p_uclog_aft('FM_32_bsp',i_sequnum_uc);
ELSE o_vc_message:='SUCCESS IN MIGRATE FM_32_bsp'|
--------------------------------------------------------------------------------
||' partition p32 values less than ('||'''120410'''||'),'
-- Created : 2012/7/20 14:55:32
p_uclog_aft('FM_32_bsp',i_sequnum_uc);
ELSE o_vc_message:='SUCCESS IN MIGRATE FM_32_bsp'|
4 rows selected
我想要的是含有"_32_"四個字元的,而得到的卻是按"32"查詢出來的結果。
這個時候就需要使用轉移字元,即escape格式:
SQL> select text from user_source where text like '%__32__%' escape '_';
TEXT
--------------------------------------------------------------------------------
p_uclog_aft('FM_32_bsp',i_sequnum_uc);
ELSE o_vc_message:='SUCCESS IN MIGRATE FM_32_bsp'|
--------------------------------------------------------------------------------
p_uclog_aft('FM_32_bsp',i_sequnum_uc);
ELSE o_vc_message:='SUCCESS IN MIGRATE FM_32_bsp'|
2 rows selected
檢視了oracle的reference,我們平時只注意到了%代表任意字元,其實還有一個萬用字元被我們忽略了。
_代表一個字元。
比如我在新增一個儲存過程:
create or replace procedure P_D is
c32 varchar2(10);
c32 varchar2(10);
bx32 varchar2(10):=
132;
begin
if bx32
=32 then
dbms_output.put_line('~a~');
end if;
end ;
create or replace procedure P_D is
c32 varchar2(10);
c32 varchar2(10);
bx32 varchar2(10):=
132;
begin
if bx32
=32 then
dbms_output.put_line('~a~');
end if;
end ;
執行 select * from user_source where text like '_32%'
結果為:
NAME TYPE LINE TEXT
1 P_D PROCEDURE 2 "c32 varchar2(10);
"
2 P_D PROCEDURE 5 "132;
"
3 P_D PROCEDURE 8 "=32 then
"
也就是說,在匹配一個字元時,空格也是計算在內的。'_'匹配了一個數字、字母或符號(只要是一個字元)
結果為:
NAME TYPE LINE TEXT
1 P_D PROCEDURE 2 "c32 varchar2(10);
"
2 P_D PROCEDURE 5 "132;
"
3 P_D PROCEDURE 8 "=32 then
"
也就是說,在匹配一個字元時,空格也是計算在內的。'_'匹配了一個數字、字母或符號(只要是一個字元)
escape的作用其實就是轉義萬用字元。在like中,萬用字元只有%和_。其他符號都可以直接呼叫。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26451536/viewspace-761050/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL like查詢字元轉義遇到的坑MySql字元
- 在HQL select查詢語句中自定義查詢結果返回的資料型別資料型別
- 在 Sql語句中使用正規表示式來查詢你所要的字元SQL字元
- sql語句中較為重要的查詢邏輯SQL
- mysql 的Escape轉義字串MySql字串
- Python語法的轉義字元Python字元
- 語義網查詢地址
- 查詢檔案中的控制字元(轉)字元
- where語句中多條件查詢欄位NULL與NOT NULL不確定性查詢Null
- 什麼是SQL 語句中相關子查詢與非相關子查詢SQL
- 子查詢包含where ..or在Corelated Subquery 中語句中問題
- Oracle sql 語句中帶有特殊的字元處理OracleSQL字元
- SQL語句中NULL的真實含義SQLNull
- SQL查詢的轉義方法(一)SQL
- 轉義字元字元
- MV定義語句中包含Fact的VIEW,能否Rewrite ?View
- SQL查詢語句使用 (轉)SQL
- oracle轉義字元Oracle字元
- oralce轉義字元字元
- SAP轉義字元字元
- mybatis 對特殊字元的模糊查詢MyBatis字元
- SQL查詢語句精華文章(轉)SQL
- js查詢包含字元最多的單詞的字元長度JS字元
- 一條SQL語句查詢塊分解及查詢轉換SQL
- sql語句中as的用法SQL
- underscore 系列之字元實體與 _.escape字元
- web前端---轉義字元的坑Web前端字元
- 對轉義字元的認識字元
- Python中的轉義字元Python字元
- 一種通用查詢語言的定義與實踐
- 折行轉義字元字元
- Markdown常用轉義字元字元
- Oracle 特殊字元轉義Oracle字元
- Oracle的語句中的提示Oracle
- insert語句中append提示對欄位的檢查APP
- 字串查詢之字元次數字串字元
- SQL查詢語言基本教程(2) (轉)SQL
- SQL查詢語言基本教程(3) (轉)SQL