Ich habe derzeit die Abfrage auf Postgres laufen:
%Vor%Aber anstatt nur Einträge zurückzugeben, die mit einem Unterstrich enden, bekomme ich alle Ergebnisse zurück, unabhängig davon, ob sie einen Unterstrich enthalten oder nicht.
Wenn Sie die folgende Abfrage ausführen, erhalten Sie einen Benutzernamen zurück, der nur ein Unterstrich ist. Das Entkommen funktioniert also:
%Vor%Wenn Sie die folgende Abfrage ausführen, wird ein Benutzername zurückgegeben, der mit einem bestimmten Buchstaben endet:
%Vor%Was mache ich falsch?
Erreicht Ihr Backslash nicht PostgreSQL? Wenn Sie die Zeichenfolge durch eine andere Ebene weiterleiten, die den umgekehrten Schrägstrich als Escapezeichen behandelt (z. B. eine Java-Zeichenfolge), entfernt diese Ebene möglicherweise den umgekehrten Schrägstrich und Sie müssen möglicherweise Ihren Backslash für diese Ebene entfernen.
Haben Sie noch weitere Benutzernamen? Wenn der Backslash nicht zu PostgreSQL durchgereicht wird, würde auch '_'
Sie können möglicherweise die ESCAPE-Klausel ausprobieren: username LIKE '%!_' ESCAPE '!'
Es ist eine Weile her, seit ich Postgres benutzt habe, aber ich denke, Sie können '% [_]' machen, um zu bekommen, was Sie wollen. Das funktioniert sicherlich auf dem SQL-Server, obwohl ich gerade kein postgres-Datenbank-Setup eingerichtet habe, um es auf
zu testen Sie müssen den umgekehrten Schrägstrich Ihrer Abfrage durch einen doppelten ersetzen:
SELECT * FROM addenda.users WHERE users.username LIKE '%\_'
Sie können immer noch eine nicht standardmäßige Verwendung von \\ in einer String-Literal Warnung erhalten, aber die Abfrage wird ausgeführt.
Getestet in Postgres 8.4.
Tags und Links sql postgresql