how to make a like search in postgresql and node js how to make a like search in postgresql and node js postgresql postgresql

how to make a like search in postgresql and node js


I don't know the node.js PostgreSQL interface that well but I think I can see the problem. This is an SQL string literal that contains a numbered placeholder:

'%$1%'

The $1 inside that string won't be replaced with the value of tag because placeholders inside strings are not placeholders at all, they're just substrings that happen to have the same form as a placeholder.

The two usual options are:

  1. Add the % wildcards in the client code.
  2. Concatenate the % wildcards onto the strings inside the database.

The first one would look like this:

db.client.query("SELECT * FROM tags WHERE name LIKE $1", ['%' + tag + '%'], ...

and the second like this:

db.client.query("SELECT * FROM tags WHERE name LIKE '%' || $1 || '%'", [tag], ...

Use whichever approach you prefer.


an ES6 solution would be something like:

client.query('select * from users where user_name Ilike $1', [`%${req.query.q}%`], (err1, result) => { ...