查詢語句中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字元
- mysql 的Escape轉義字串MySql字串
- Python語法的轉義字元Python字元
- 什麼是SQL 語句中相關子查詢與非相關子查詢SQL
- Oracle sql 語句中帶有特殊的字元處理OracleSQL字元
- mysql 的Escape跳脫字元串MySql字元
- 轉義字元字元
- oracle轉義字元Oracle字元
- web前端---轉義字元的坑Web前端字元
- Oracle 特殊字元轉義Oracle字元
- Markdown常用轉義字元字元
- 折行轉義字元字元
- mybatis 對特殊字元的模糊查詢MyBatis字元
- underscore 系列之字元實體與 _.escape字元
- 20201214]查詢隱式轉換的sql語句.txtSQL
- [20201214]查詢隱式轉換的sql語句.txtSQL
- sql語句中JOIN ON 的使用SQL
- 正規表示式需要轉義的字元字元
- C/C++的轉義字元詳解C++字元
- 正規表示式 轉義字元字元
- php過濾html標籤、特殊字元、轉義字元PHPHTML字元
- sql語句中#{}和${}的區別SQL
- HTML 基礎知識(特殊字元的轉義)HTML字元
- js做資料的轉義字元替換JS字元
- 如何處理 MySQL 萬用字元的模糊查詢MySql字元
- Spring Data Jpa 的簡單查詢多表查詢HQL,SQL ,動態查詢, QueryDsl ,自定義查詢筆記SpringSQL筆記
- 二分查詢的定義
- mysql查詢語句5:連線查詢MySql
- 簡單的查詢語法
- Shell命令列中的特殊字元及其轉義(去除特殊含義)命令列字元
- SQL語句中exists和in的區別SQL
- Ruby 中的語句中斷和返回
- SQL語句中not in 和not exist的區別SQL
- [譯] 最詳細的 CSS 字元轉義處理CSS字元
- Python中查詢字串某個字元最常用的方法!Python字串字元
- mysql查詢語句MySql
- Oracle 查詢轉換Oracle
- 轉義正規表示式中特殊字元字元
- MySQL的簡單查詢語句MySql