![]() |
Datenbank: MsSql express • Version: 2005 • Zugriff über: Devart SDAC Components
MS-SQL Abfrage mit where Like
Hallo,
mit Format erstelle ich den SuchString für eine Abfrage. z.B. wird aus 'Sch Fest' = '%sch%fest%' Die Abfrage sieht dann vereinfacht wie folgt aus:
SQL-Code:
Das klappt so weit auch prima.
Select * from Artikel where SearchStr like '%sch%fest%'
Nun möchte ich aber gerne das die Reihenfolge der Suchbegriffe keine rolle spielt. Bei der Eingabe von 'Sch Fest' sollen z.B. folgende Artikel gefunden werden: "Schrauben für Festplatte" "Festplattenschrauben" Mit:
SQL-Code:
bekomme ich das schon hin.
Select * from Artikel where SearchStr like '%sch%' and SearchStr like '%fest%'
Aber da gibt es doch bestimmt eine bessere Lösung? Die Anzahl der Suchbegriffe ist übrigens nicht begrenzt. Besten Dank für Eure Hilfe EarlyBird |
Re: MS-SQL Abfrage mit where Like
Hallo,
Verknüpf das ganze doch einfach...
SQL-Code:
Gruß Jens
Select * from Artikel where SearchStr like '%sch%fest%' or 'fest%%sch%'
|
Re: MS-SQL Abfrage mit where Like
Danke für den Tipp.
Aber was mache ich bei 3,4,5,6 oder mehr Suchbegriffen |
Re: MS-SQL Abfrage mit where Like
Eventuell so...
SQL-Code:
Je nach größe würde ich das ganze in eine Stringliste packen und durch ein for Schleife laufen lassen.
Select * from Artikel where SearchStr like '%sch%fest%' or 'fest%%sch%' or '%Ha%llo%' or 'oll%%ah%'
Gruß Jens |
Re: MS-SQL Abfrage mit where Like
Müsste ungefähr so funktionieren. Wenn Du es mit der StringList machen würdest, ist es aufjedenfall egal wieviele Varianten Du suchen würdest..
Delphi-Quellcode:
Qry_SQLTest.SQL.Add('Select * from Artikel where SearchStr like ');
Slsql := TStringList.Create; Slsql.Add('sch'); Slsql.Add('Test'); Slsql.Add('Warum'); Slsql.Add('Es'); for i := 0 to Slsql.Count - 1 do Qry_SQLTest.SQL.Add('or '+Slsql[i]); ... |
Re: MS-SQL Abfrage mit where Like
Bei MSSQL gibt es auch eine Volltextsuche. Eventuell bringt dich
![]() |
Re: MS-SQL Abfrage mit where Like
@alzaimar Danke für den Tip
"CONTAINS" werde ich mir mal genauer ansehen. Ich glaube aber das Volltextsuche in der Expressedition nicht möglich. Gibt es nicht die Möglichkeit:
SQL-Code:
oder so ähnlich?
Select * from Artikel where ['%suchbegriff1%', '%suchbegriff2%', '%suchbegriff3%', '%suchbegriff4%'] in SearchStr
@Jens Das funktioniert so nicht
Delphi-Quellcode:
So klappt es
Qry_SQLTest.SQL.Add('Select * from Artikel where SearchStr like ');
Slsql := TStringList.Create; Slsql.Add('sch'); Slsql.Add('Test'); Slsql.Add('Warum'); Slsql.Add('Es'); for i := 0 to Slsql.Count - 1 do Qry_SQLTest.SQL.Add('or '+Slsql[i]); ...
Delphi-Quellcode:
Aber genau das wollte ich ja "anders" "besser" "eleganter" lösen.
Qry_SQLTest.SQL.Add('Select * from Artikel where SearchStr like ');
Slsql := TStringList.Create; Slsql.Add('sch'); Slsql.Add('Test'); Slsql.Add('Warum'); Slsql.Add('Es'); for i := 0 to Slsql.Count - 1 do Qry_SQLTest.SQL.Add('and SearchStr like ' + Slsql[i]); ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz