Alexander (HH): like in SQL

Beitrag lesen

Moin Moin!

Die gängigen RDBMS (MS SQL, MySQL, Oracle, PostgreSQL, SQLite) kennen die Notation 'a' LIKE 'b' ESCAPE 'c'.

Zumindest bei MySQL kann man mit dem ESCAPE lediglich das Escape-Zeichen angeben.

Mehr soll es ja auch nicht. Das gilt übrigens auch für die anderen RDBMS.

Die Jokerzeichen _ und % sind nicht konfigurierbar.

Muß ja auch nicht, Escaping reicht vollkommen aus.

... where foo like '!_a_' escape '!'

sucht alle Einträge, bei denen foo aus exakt drei Zeichen besteht, das erste ein Unterstrich ist, das zweite ein 'a', und das dritte Zeichen beliebig.

Entsprechend sucht

... where foo like '50*% von nichts sind %' escape '*'

alle Einträge, bei denen foo mit '50% von nichts sind ' anfängt (hier wäre substr() vermutlich effizienter).

Und um auf Jürgens Frage zu kommen:

... where foo like '/!_kunde/grundlagen/dt%' escape '!'

sucht nach Einträgen, die mit '/_kunde/grundlagen/dt' beginnen, und auch hier wäre substr() vermutlich effizienter.

Ach ja, bevor ich es vergesse: Das Escape-Zeichen selbst kann man natürlich auch escapen:

... where foo like '50!% von nichts sind % !!' escape '!'

sucht nach Einträgen, bei denen foo mit '50% von nichts sind ' anfängt, dann null oder mehr beliebige Zeichen hat, und schließlich mit ' !' endet.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".