Suchen mit dem Like Operator nach Texten, die einen "_" enthalten

In SQL kann der „_“ im Like Operator verwendet werden, um genau ein beliebiges Zeichen an genau dieser Stelle zu finden.

Beispiel:

SELECT ename FROM emp WHERE ename LIKE "_iger"
---
Tiger

Wie suche ich jetzt aber nach allen Datensätzen, die einen Underscore „_“ als Text enthalten?

1. Versuch

So funktioniert es nicht!

SELECT email FROM emailaddresses WHERE email LIKE '%_%'
---
gunther@testmal.cn
gunther_test@test.cn
...
-- Findet alle!

2. Versuch

Lösung: Das Syntaktische Element „_“ escapen, damit es als Text gesucht wird!

SELECT email FROM emailaddresses WHERE email LIKE '%\_%' ESCAPE '\';
---
gunther_pipperr@testmail.cn
 
SELECT email FROM emailaddresses WHERE email like  '%-_%' ESCAPE '-';
---
gunther_pipperr@testmail.cn

3. Versuch (ab 10g) Regulärer Ausdurck

SELECT email  FROM emailaddresses WHERE regexp_like(email,'^.*[_].*$');
---
gunther_pipperr@testmail.cn

⇒ Siehe auch Reguläre Ausdrücke in der Oracle Datenbank in SQL verwenden