「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テーブルの確認
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構文
select * from user_info
where username like '%\_%' ESCAPE '\';
select * from user_info
where username like '%\_%' ESCAPE '\';
select * from user_info where username like '%\_%' ESCAPE '\';
実行結果
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構文
select * from user_info
where username like '\%%' ESCAPE '\';
select * from user_info
where username like '\%%' ESCAPE '\';
select * from user_info where username like '\%%' ESCAPE '\';
実行結果
USERID USERNAME AGE
13 %tokyo 25
USERID USERNAME AGE
13 %tokyo 25
USERID USERNAME AGE 13 %tokyo 25