Wie kann ich Namen mit regulären Ausdrücken abfragen?

7

Wie kann ich in einer Spalte nach einem bestimmten Muster suchen?

Zum Beispiel möchte ich alle Benutzernamen erhalten, die entweder mit Buchstabe A oder B beginnen.

(Übrigens: Dies ist markiert oracle, könnte aber auch in anderen RDBMS interessant sein.)

Sebastian Roth
quelle
Vielleicht sollte die Frage umbenannt werden, da für die Lösung kein regulärer Ausdruck erforderlich ist. Ich habe regulären Ausdruck als Tag hinzugefügt.
Leigh Riffel

Antworten:

15

Ihre Frage erfordert keine regulären Ausdrücke:

WHERE name LIKE 'A%' OR name LIKE 'B%'

Für Oracle gibt es REGEXP_LIKE ; Postresql, es gibt ÄHNLICH ZU ; MySQL hat REGEXP . Eine Sache, an die Sie sich erinnern sollten, ist jedoch, dass nicht alle Engines für reguläre Ausdrücke gleich sind. Nur weil sie reguläre Ausdrücke unterstützen, bedeutet dies nicht, dass sie notwendigerweise Aussagen zu Wortgrenzen, nicht gierigen Quantifizierern oder Behauptungen mit negativem Aussehen usw. unterstützen.

Joe
quelle
Vielen Dank. In meinem Fall reicht das aus. Ich fand auch, dass dies funktioniert:SELECT mname FROM names WHERE regexp_like(mname,'^[AB].*$');
Sebastian Roth
3
Alles was Sie wirklich brauchen ist ^[AB]... das .*$ist überflüssig
Joe