Entwickler-Ecke
Datenbanken - SQL-Suche mit Platzhalter
Hänsel - Fr 02.02.18 16:02
Titel: SQL-Suche mit Platzhalter
Hallo kann jemand helfen?
Ich arbeite mit einer MSSQL-Datenbank und habe folgende Frage: Wenn ich in Edit1-Feld einen Namen eingebe,wird auch nach diesen gesucht bzw. gefiltert. Ich möchte aber zum Beispiel nicht nur nach "Müller" suchen sondern nach alle Namen die mit M beginnen.
Was kann ich hier machen?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| Begin if Edit1.Text='' then Begin exit; End else Begin bez:=Edit1.Text; DataModule2.ADOQuery_Mieter.Close; DataModule2.ADOQuery_Mieter.SQL.Text:='Select * From MDV1 Where Name ='+bez+''; DataModule2.ADOQuery_Mieter.Open; z:=DataModule2.ADOQuery_Mieter.RecordCount; Label6.Caption:=inttostr(Z); |
Moderiert von Christian S.: Delphi-Tags hinzugefügt
ub60 - Fr 02.02.18 16:55
SQL-Anweisung
1:
| ... WHERE Name LIKE "M%" ... |
sollte gehen.
ub60
Hänsel - Fr 02.02.18 17:26
Danke für den Hinweis. Ich hatte statt LIKE das = verwendet. Jetzt funktioniert es . Danke nochmals
Hänsel
haentschman - Fr 02.02.18 18:09
Moin... :P
Nur so als Hinweis...
Mit LIKE im SQL kann der Index der Spalte nicht verwendet werden. Das bedeutet, daß über die gesamte Tabelle gesucht wird! Das solltest du ggf. einplanen... :zwinker:
Sinspin - So 04.02.18 19:33
Ich Würde lieber Contains verwenden. Dazu muss allerdings für die Tabelle ein FTS Index erstellt worden sein.
Es wird also via Index gesucht (schnell).
Und "*" kann zum Suchen nach Wortteilen verwendet werden.
SQL-Anweisung
1:
| Select * From MDV1 Where Contains(Name, 'Sucht*'); |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!