2016-06-28 14 views
6

Bei der Suche nach Unterstrichen in Postgresql funktioniert die wörtliche Verwendung des Zeichens _ nicht. Wenn Sie beispielsweise alle Ihre Tabellen nach Spalten durchsuchen möchten, die in _by enden, können Sie beispielsweise für Änderungsprotokoll- oder Aktivitätsinformationen, z. updated_by, reviewed_by usw., wird die folgende Abfrage funktioniert fast:Unterstreichung von Unterstrichen in Postgresql

SELECT table_name, column_name FROM information_schema.columns 
WHERE column_name LIKE '%_by' 

Es ignoriert grundsätzlich den Unterstrich vollständig und kehrt als ob Sie für LIKE '%by' gesucht haben. Dies ist in keinem Fall ein Problem, aber es hat das Potenzial, eins zu sein. Wie suche ich nach Unterstrichen?

+2

'%' und '_' sind die Platzhalterzeichen für' like'. '%' = null oder mehr, '_' = irgendein einzelnes Zeichen. –

Antwort

5

Sie müssen einen Backslash verwenden, um den Unterstrich zu umgehen. Ändern Sie die Beispielabfrage wie folgt:

SELECT table_name, column_name FROM information_schema.columns 
WHERE column_name LIKE '%\_by' 
+4

Ich musste '... wie E '% \\ _ by'' (mit psql auf der Kommandozeile, PostgreSQL 8.4.20) –

+0

So finden Sie in diesem Fall: SELECT table_name, column_name VON information_schema.columns WHERE column_name LIKE '% name_abc' –

+1

@SameErk 'SELECT tabellenname, spaltenname FROM informationsschema.spalten WHERE spaltenname LIKE '% name \ _abc' sollte funktionieren. –

Verwandte Themen