Slick: Is there a way to create a WHERE clause with a regex?

Viewed 1047

I look for a slick equivalient to

select * from users where last_name ~* '[\w]*son';

So for example when having the following names in the database:

first_name | last_name
----------------------
Tore       | Isakson
John       | Smith
Solveig    | Larsson
Marc       | Finnigan

The result would be

first_name | last_name
----------------------
Tore       | Isakson
Solveig    | Larsson

My current solution is to interpolate this with an SQLActionBuilder like

val pattern = "[\\w]*son"
val action = sql""" SELECT * FROM users WHERE last_name ~* ${pattern}; """.as[User]

But this is not the way I would like to have it. I would prefer something like

users.filter(_.last_name matchRegex "[\\w]*son")   // <- This does not exist

In case it is relevant: I use Postgres.

1 Answers
Related