Escape-Zeichenfolgen für den Mustervergleich in PostgreSQL
Um Muster in PostgreSQL genau abzugleichen, wenn die vom Benutzer bereitgestellte Zeichenfolge spezielle Musterzeichen wie % enthalten kann , erwägen Sie, diese Zeichen zu maskieren, um genaue Übereinstimmungen sicherzustellen. Alternativ kann die Anwendung den Escape-Prozess übernehmen.
In PostgreSQL müssen Zeichen wie % und _ mit Anführungszeichen gesetzt werden, dies kann jedoch mit der ESCAPE-Klausel angepasst werden. Um das Zeichen wörtlich zu finden, muss es zweimal in Anführungszeichen gesetzt werden.
Um beispielsweise das Muster „john%node1^node2.uucp@“ mit ^ als Escape-Zeichen abzugleichen, verwenden Sie die folgende Abfrage:
... WHERE field LIKE 'john^%node1^^node2.uucp@%' ESCAPE '^'
Wenn jedoch standard_conforming_strings deaktiviert ist (PG 9.1 ist standardmäßig aktiviert), wird es für andere Zwecke verwendet. Darüber hinaus können in Injektionsszenarien clientseitige Anführungszeichen erforderlich sein.
Für die generische Handhabung in Go unter Berücksichtigung von standard_conforming_strings und alternativen Anführungszeichen kann die folgende Abfrage verwendet werden:
db.Query("SELECT * from USERS where name like replace(replace(replace(,'^','^^'),'%','^%'),'_','^_') ||'%' ESCAPE '^'", variable_user_input);
This kümmert sich um das Escapen und Ersetzen von Sonderzeichen auf der Serverseite, verhindert die SQL-Injection und sorgt für einen genauen Mustervergleich.
Das obige ist der detaillierte Inhalt vonWie entferne ich Sonderzeichen für einen genauen Mustervergleich in PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!