Sonderzeichen in PostgreSQL-LIKE-Mustern maskieren
Sonderzeichen in LIKE-Mustern maskieren ist entscheidend, um eine genaue Übereinstimmung sicherzustellen. Stellen Sie sich beispielsweise ein Szenario vor, in dem Sie nach Zeilen suchen, in denen die Namensspalte mit einer vom Benutzer bereitgestellten Zeichenfolge beginnt, z. B. „rob%“. Wenn die Benutzereingabe jedoch Sonderzeichen wie „_“ enthält, führt dies zu Fehlalarmen.
Escape-Mechanismen
PostgreSQL ermöglicht Ihnen, Sonderzeichen mit dem zu maskieren Backslash () oder ein benutzerdefiniertes Escape-Zeichen, das mit der ESCAPE-Klausel angegeben wird. Um ein Sonderzeichen wörtlich zu finden, müssen Sie es zweimal maskieren.
Beispiel
Um „rob_“ wörtlich zuzuordnen, würden Sie das folgende LIKE-Muster verwenden:
WHERE name LIKE 'rob^^%'
Alternativ können Sie eine Escape-Klausel verwenden und ein alternatives Escape-Zeichen angeben:
WHERE name LIKE 'rob_%node1^^node2.uucp@%' ESCAPE '^'
Dies wird Übereinstimmung mit „john%node1^node2.uccp@“, gefolgt von beliebigen Zeichen.
Überlegungen
Generische SQL-Anweisung
Hier ist eine generische SQL-Anweisung, die mit oder ohne aktivierte „standard_conforming_strings“ und unter Verwendung serverseitiger Escape-Zeichen verwendet werden kann Ersatz:
SELECT * FROM USERS WHERE name LIKE replace(replace(replace(,'^','^^'),'%','^%'),'_','^_') ||'%' ESCAPE '^'
Das obige ist der detaillierte Inhalt vonWie entferne ich Sonderzeichen in PostgreSQL-LIKE-Mustern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!