Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi LIKE (https://www.delphipraxis.net/49422-like.html)

Schodn 11. Jul 2005 08:34

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?

Touchdown 11. Jul 2005 08:50

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.

Schodn 11. Jul 2005 08:53

Re: LIKE
 
str_1 := '9';
str_2 := 'sch';

Er gibt mir aber auch Einträge zurück, die nicht 9 in der PLZ enthalten.

mikhal 11. Jul 2005 08:58

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

Jasocul 11. Jul 2005 09:03

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.

Schodn 11. Jul 2005 09:09

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

Treffnix 11. Jul 2005 09:15

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.

Jasocul 11. Jul 2005 09:18

Re: LIKE
 
Lass dir die Werte vor der Ausführung des SQL-Statements mal anzeigen.

mikhal 11. Jul 2005 09:19

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

Schodn 11. Jul 2005 09:23

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 07:47 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz