![]() |
Datenbank: Firebird 3 • Version: 3 • Zugriff über: FireDac
Firebird 3 SQL verstehe ich nicht?
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 |
AW: Firebird 3 SQL verstehe ich nicht?
Trailing Blank?
|
AW: Firebird 3 SQL verstehe ich nicht?
Entweder TRIM Über das Feld ArtikelNr oder versuch es mit LIKE
|
AW: Firebird 3 SQL verstehe ich nicht?
Vielen Dank euch beiden,
mit TRIM funktioniert es. Wahrscheinlich sind die Artikelnummen in der Tabelle rechtsbündig angelegt. LG Harry |
AW: Firebird 3 SQL verstehe ich nicht?
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
|
AW: Firebird 3 SQL verstehe ich nicht?
Zitat:
Falls das so ist, solltest du nochmal über die richtige Datenhaltung oder Formatierung der Artikelnummer nachdenken. |
AW: Firebird 3 SQL verstehe ich nicht?
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:
SQL-Code:
create index ix_artikelnr computed by (trim(artikelnr))
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 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 by Thomas Breitkreuz