AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird 3 SQL verstehe ich nicht?
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird 3 SQL verstehe ich nicht?

Ein Thema von HCB · begonnen am 12. Jun 2023 · letzter Beitrag vom 15. Jun 2023
Antwort Antwort
HCB

Registriert seit: 12. Feb 2020
136 Beiträge
 
Delphi 12 Athens
 
#1

Firebird 3 SQL verstehe ich nicht?

  Alt 12. Jun 2023, 18:29
Datenbank: Firebird 3 • Version: 3 • Zugriff über: FireDac
Hallo, ich kapiere nicht warum folgende Abfrage unter Firebird nicht funktioniert:

select * from ARTIKEL where ARTIKELNR = '1063040' //Es werden 0 Datensätze angezeigt obwohl dieser Artikel vorhanden ist
select * from ARTIKEL where ARTIKELNR < '1063040' // funktioniert, alle die kleiner sind werden gelistet
select * from ARTIKEL where ARTIKELNR > '1063030' // funktioniert, alle die größer sind werden gelistet auch der 1063040

WARUM zum Kuckuck wird dieser mit = nicht gefunden????
Hat jemand einen Rat für mich?

LG Harry
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.015 Beiträge
 
Delphi 12 Athens
 
#2

AW: Firebird 3 SQL verstehe ich nicht?

  Alt 12. Jun 2023, 18:38
Trailing Blank?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
673 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Firebird 3 SQL verstehe ich nicht?

  Alt 13. Jun 2023, 10:33
Entweder TRIM Über das Feld ArtikelNr oder versuch es mit LIKE
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
136 Beiträge
 
Delphi 12 Athens
 
#4

AW: Firebird 3 SQL verstehe ich nicht?

  Alt 13. Jun 2023, 15:20
Vielen Dank euch beiden,

mit TRIM funktioniert es. Wahrscheinlich sind die Artikelnummen in der Tabelle rechtsbündig angelegt.

LG Harry
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
646 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Firebird 3 SQL verstehe ich nicht?

  Alt 13. Jun 2023, 18:59
kann auch datentype problem sein, wenn char dann immer mit leerzeichen hinten aufgefüllt gespeichert, beim varchar nicht und auch dadurch kann sich so was auch mal logisch auflösen
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

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

AW: Firebird 3 SQL verstehe ich nicht?

  Alt 14. Jun 2023, 06:15
mit TRIM funktioniert es. Wahrscheinlich sind die Artikelnummen in der Tabelle rechtsbündig angelegt
Wenn du auf dem Feld einen Index/PK hast, zerschießt dir das Trim die Performance, weil der Index nicht mehr genutzt werden kann.
Falls das so ist, solltest du nochmal über die richtige Datenhaltung oder Formatierung der Artikelnummer nachdenken.
Peter
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.418 Beiträge
 
Delphi 7 Professional
 
#7

AW: Firebird 3 SQL verstehe ich nicht?

  Alt 15. Jun 2023, 10:27
Muss die Artikelnummer überhaupt formatiert werden? (Und wenn ja, warum in der Datenbank und nicht in der Anzeige?)

Ist sie alphanummerisch oder nummerisch. Sollte sie nummerisch sein, wäre es durchaus sinnvoll, sie auch nummerisch in der Datenbank abzulegen.

Ist sie als Char gespeichert, dann muss man bei der Suche die zu suchende Zeichenfolge auf die entsprechende Länge des Datenbankfeldes bringen. Sprich: entsprechend viele Leerzeichen anhängen.

Wenn die Artikelnummer rechtsbündig in der Datenbank abgelegt ist, dann muss man bei der Suche via SQL das berücksichtigen und die zu suchende Zeichenfolge links mit der entspechenden Anzahl von Leerzeichen auf die entsprechende Länge für die rechtsbündige Ablage in der Datenbank bringen, dann braucht man auch kein Trim.

Damit der Index nicht kaputtgeht (sprich auch mit Trim genutzt werden kann) könnte man ihn eventuell so anlegen: create index ix_artikelnr computed by (trim(artikelnr))
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 15:46 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