![]() |
Datenbank: SQL • Zugriff über: ADO
LIKE
Hallo Leute ich hab eine Montag morgen frage
SELECT * FROM firma WHERE firmen_plz LIKE '+ QuotedStr(str_1) + ' AND firmen_bez LIKE ' + QuotedStr(str_2) + ' order by firmen_bez' Diese Abfrage führt er so aus als wär das AND ein OR. Er schränkt nicht auf beide Spalten ein sondern nur auf eine. Kann mir hier wer weiterhelfen? |
Re: LIKE
Was steht den z.B. in str_1 und str_2? Das Statement sieht doch ok aus, bei 'like' könnte es logisch richtig sein was die Datenbank dir da wieder gibt.
|
Re: LIKE
str_1 := '9';
str_2 := 'sch'; Er gibt mir aber auch Einträge zurück, die nicht 9 in der PLZ enthalten. |
Re: LIKE
Was erhältst du denn für ein Ergebnis, wenn du an deine Strings noch ein '%' hängst. Ansonsten macht die Verwendung von LIKE sowieso keinen Sinn, da es die langsamste Vergleichsoperation ist, die SQL zu bieten hat.
Grüße Mikhal |
Re: LIKE
Bei mir gibt die Abfrage eine leere Menge zurück, da keine Joker-Zeichen enthalten sind (Oracle). Mit den entsprechenden Zeichen läuft es aber genau, wie gewünscht.
|
Re: LIKE
str_1 := '%' + str_1 + '%';
str_2 := '%' + str_2 + '%'; hab hab ich vorangestellt funktioniert aber nicht das like geht schon aber ich will nur einträge erhalten, die auf beide spalten zutreffen. ich bekomme aber auch einträge zurück, die nur auf eine Spalte zutreffen. das AND ist so wie ein OR |
Re: LIKE
bist du sicher, dass du nicht nur dein Statement falsch verstehst? Bei %9% ist ja jede Postleitzahl gültig, die irgendwo eine 9 hat. Das können schon ne Menge sein.
Welche DB benutzt du eigentlich? M$-SQL? Poste doch mal ne Ergebnismenge. |
Re: LIKE
Lass dir die Werte vor der Ausführung des SQL-Statements mal anzeigen.
|
Re: LIKE
Welche Datenbank verwendest du eigentlich, MS SQL Server MySQL?
Wie Jasocul bereits mitteilte, funktinioniert es bei Oracle wie erwartet und nach meinen Erfahrungen sollte auch MS SQL Server, Firebird und PostgreSQL wie erwartet arbeiten. Grüße Mikhal |
Re: LIKE
SELECT * FROM FIRMA WHERE firmen_plz LIKE '+ QuotedStr(str_1) + ' OR firmen_bez LIKE ' + QuotedStr(str_2) + ' order by firmen_bez
SELECT * FROM FIRMA WHERE firmen_plz LIKE '+ QuotedStr(str_1) + ' AND firmen_bez LIKE ' + QuotedStr(str_2) + ' order by firmen_bez Die beiden geben das gleiche zurück egal ob AND oder OR das ist mein Problem Ja ich will alle PLZ zurückbekommen die eine 9 vorhanden haben egal wo und alle die einen bestimmten string im Namen aufweisen. aber nur solche einträge, bei den beide einschränkungen zutreffen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 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