Heim > Backend-Entwicklung > Golang > Wie entferne ich Sonderzeichen in PostgreSQL-LIKE-Mustern?

Wie entferne ich Sonderzeichen in PostgreSQL-LIKE-Mustern?

Mary-Kate Olsen
Freigeben: 2024-11-23 00:22:13
Original
420 Leute haben es durchsucht

How to Escape Special Characters in PostgreSQL LIKE Patterns?

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^^%'
Nach dem Login kopieren

Alternativ können Sie eine Escape-Klausel verwenden und ein alternatives Escape-Zeichen angeben:

WHERE name LIKE 'rob_%node1^^node2.uucp@%' ESCAPE '^'
Nach dem Login kopieren

Dies wird Übereinstimmung mit „john%node1^node2.uccp@“, gefolgt von beliebigen Zeichen.

Überlegungen

  • Das Standard-Escape-Zeichen ist der Backslash, wird aber für verwendet Andere Zwecke, wenn standard_conforming_strings auf OFF gesetzt ist.
  • Das Escapezeichen von Sonderzeichen gilt auch für dynamische SQL-Anweisungen, die vom Benutzer erstellt wurden Eingabe, in diesem Fall sollte sie serverseitig durchgeführt werden, um SQL-Injection zu vermeiden.
  • Die Verwendung von Platzhaltern für die Variablenersetzung gewährleistet sowohl genaue Übereinstimmung als auch Sicherheit.

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 '^'
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage