PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

comment faire une recherche similaire dans postgresql et node js

Je ne connais pas très bien l'interface node.js PostgreSQL mais je pense voir le problème. Il s'agit d'un littéral de chaîne SQL contenant un espace réservé numéroté :

'%$1%'

Le $1 à l'intérieur de cette chaîne ne sera pas remplacée par la valeur de tag parce que les espaces réservés à l'intérieur des chaînes ne sont pas du tout des espaces réservés, ce sont juste des sous-chaînes qui ont la même forme qu'un espace réservé.

Les deux options habituelles sont :

  1. Ajouter le % caractères génériques dans le code client.
  2. Concaténer le % des caractères génériques sur les chaînes à l'intérieur de la base de données.

Le premier ressemblerait à ceci :

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

et le second comme ceci :

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

Utilisez l'approche que vous préférez.