「Oracle」likeとescape文で検索文字列をエスケープするサンプル

環境
Oracle Database 11g Release 11.2.0.1.0 – 64bit Production
PL/SQL Release 11.2.0.1.0 – Production

構文
select * from テーブル名
where 列名 like '(エスケープ文字%or_)値(エスケープ文字%or_)’ escape 'エスケープ文字’
like文の後にescapeを使用すると指定した文字の後はエスケープされます。
検索したい文字列に%や_が存在する場合に使用します。

使用例
1.USER_INFOテーブルの確認

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
USERID USERNAME AGE
11 to01 23
12 user02 24
13 tokyo 25
14 user05 35
15 osaka06 40
USERID USERNAME AGE 11 to01 23 12 user02 24 13 tokyo 25 14 user05 35 15 osaka06 40
USERID	USERNAME	AGE
11	to01	       23
12	user02	       24
13	tokyo	       25
14	user05	       35
15	osaka06	       40

2.テーブルの列名「username」に対して条件文字「_」にlikeとescapeを指定します。
SQL構文

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
select * from user_info
where username like '%\_%' ESCAPE '\';
select * from user_info where username like '%\_%' ESCAPE '\';
select * from user_info
where username like '%\_%' ESCAPE '\';

実行結果

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
USERID USERNAME AGE
15  osa_ka06 40
USERID USERNAME AGE 15  osa_ka06 40
USERID	USERNAME	AGE
15	 osa_ka06	40

3.テーブルの列名「username」に対して条件文字「%」にlikeとescapeを指定します。
SQL構文

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
select * from user_info
where username like '\%%' ESCAPE '\';
select * from user_info where username like '\%%' ESCAPE '\';
select * from user_info
where username like '\%%' ESCAPE '\';

実行結果

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
USERID USERNAME AGE
13    %tokyo     25
USERID USERNAME AGE 13    %tokyo     25
USERID	USERNAME	AGE
13	   %tokyo	    25

 

Oracle

Posted by arkgame