Wenn ich eine Tabelle mit TextSuche Einträge bestimmten Text enthalten, mit Prepared-Anweisung
habencreate table my_table(
id integer primary key,
para text
);
Ich möchte alle Einträge auszuwählen, die ein bestimmtes Feld
SELECT * FROM my_table WHERE text LIKE '%searchtext%';
So enthält es mir alle Felder geben das enthält "Suchtext". Gibt es irgendeine aggregierte Funktion/Prozedur wie contain(...)
in postgresql, um dasselbe zu tun.
SELECT * FROM my_table WHERE contains(text, 'searchtext');
Ich mag das oben beschriebene Verhalten, weil ich vorbereitete Anweisung verwenden Parameter zu schaffen, in dem String z.B. WHERE text = ?
dann stelle ich Parameter anstelle von ?
zur Verfügung.
'wo para wie concat ('%' zu verwenden, wäre wäre gewöhnt,?, '%') 'sollte funktionieren –
@a_horse_with_no_name Tut mir leid. Ich hätte das erwähnen sollen. Ich verwende eine vorbereitete Aussage aus Sicherheitsgründen. Wenn ich Ihre Methode verwenden werde, kann auch jemand etwas wie 'abc%' oder '% def' (sql injection) weitergeben. – afzalex
Das '?' ** ist ** der Parameter für das PreparedStatement. Es ist nicht anfällig für SQL-Injection –