AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

LIKE

Ein Thema von Schodn · begonnen am 11. Jul 2005 · letzter Beitrag vom 11. Jul 2005
Antwort Antwort
Seite 1 von 3  1 23      
Schodn

Registriert seit: 15. Nov 2004
Ort: Admont
140 Beiträge
 
#1

LIKE

  Alt 11. Jul 2005, 09:34
Datenbank: SQL • Zugriff über: ADO
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?
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#2

Re: LIKE

  Alt 11. Jul 2005, 09:50
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.
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  Mit Zitat antworten Zitat
Schodn

Registriert seit: 15. Nov 2004
Ort: Admont
140 Beiträge
 
#3

Re: LIKE

  Alt 11. Jul 2005, 09:53
str_1 := '9';
str_2 := 'sch';

Er gibt mir aber auch Einträge zurück, die nicht 9 in der PLZ enthalten.
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: LIKE

  Alt 11. Jul 2005, 09:58
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
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.355 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: LIKE

  Alt 11. Jul 2005, 10:03
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.
Peter
  Mit Zitat antworten Zitat
Schodn

Registriert seit: 15. Nov 2004
Ort: Admont
140 Beiträge
 
#6

Re: LIKE

  Alt 11. Jul 2005, 10:09
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
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#7

Re: LIKE

  Alt 11. Jul 2005, 10:15
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.
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.355 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: LIKE

  Alt 11. Jul 2005, 10:18
Lass dir die Werte vor der Ausführung des SQL-Statements mal anzeigen.
Peter
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: LIKE

  Alt 11. Jul 2005, 10:19
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
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Schodn

Registriert seit: 15. Nov 2004
Ort: Admont
140 Beiträge
 
#10

Re: LIKE

  Alt 11. Jul 2005, 10:23
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:37 Uhr.
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