Entwickler-Ecke
Datenbanken - Muß ich Trim(String) machen bevor Post?
JRegier - Fr 22.07.05 06:10
Titel: Muß ich Trim(String) machen bevor Post?
Hi, wie ist es muß ich Trim(String) machen wenn ich werte in die DB Speichern will?
Ich meine wenn ich später suche in der DB und es enthält Leerzeichen kann es gefunden werden wenn ich ohne Leerzeichen suche
und in der DB ist es mit Leerzeichen?
Udontknow - Fr 22.07.05 08:09
Hallo!
Natürlich kann auch ein Teilstring gesucht werden (entweder über SQl-Einschränkung und Verwendung von 'starting with' oder 'like "Teilstring%"', oder aber durch ein Locate mit der Option loPartialKey), allerdings ist es klüger, die Strings getrimmt zu speichern, da man mit einem direkten Vergleich schneller Ergebnisse bekommt.
Cu,
Udontknow
JRegier - Fr 22.07.05 08:14
Udontknow hat folgendes geschrieben: |
Hallo!
Natürlich kann auch ein Teilstring gesucht werden (entweder über SQl-Einschränkung und Verwendung von 'starting with' oder 'like "Teilstring%"', oder aber durch ein Locate mit der Option loPartialKey), allerdings ist es klüger, die Strings getrimmt zu speichern, da man mit einem direkten Vergleich schneller Ergebnisse bekommt.
Cu,
Udontknow |
Vielen Dank! Power Delphianer :D
jaevencooler - Fr 22.07.05 09:33
Moin, Moin,
es ist nicht unbedingt ausreichend wenn man Strings getrimmt speichert. Je nach der Definition Deines Datenbankfeldes in den Du den String speicherst, gehen diese Information eventuell verloren.
Du musst also genau darauf achten wie die Datenbank :!: die gespeicherten Werte behandelt, bei Oracle z.B. verhält es sich folgendermaßen:
1.) definierst Du das Datenfeld als char, dann wird :!: immer :!: die definierte Feldlänge ausgelesen, nicht die Länge des gespeicherten Strings.
2.) definierst Du das Datenfeld als Varchar(2), dann wird der gespeicherte String in seiner Länge ausgelesen.
es hängt also maßgeblich von der verwandten Datenbank ab, und dem Datentyp in den Du den String speicherst. :?
Beste Grüße
Michael
JRegier - Fr 22.07.05 10:06
jaevencooler hat folgendes geschrieben: |
definierst Du das Datenfeld als char, dann wird :!: immer :!: die definierte Feldlänge ausgelesen, nicht die Länge des gespeicherten Strings.
|
Da wir hier beim Thema Char sind, wieso ist es nicht sinnvoller Varchar verwenden da ja dabei nur die länge des Strings gespeichert wird also man spart Speicherplatz!
Und Char wenn die daten gespeichert werden werden denn bis zur definierten länge Leerzeichen angehängt?
jasocul - Fr 22.07.05 10:13
Bei Char muss die DB sich nicht um die Verwaltung der tatsächlichen Länge kümmern.
Das ist eine Kosten-Frage: Speicherplatz gegenüber Geschwindigkeit (Rechnerauslastung).
JRegier - Fr 22.07.05 10:16
jasocul hat folgendes geschrieben: |
Bei Char muss die DB sich nicht um die Verwaltung der tatsächlichen Länge kümmern.
Das ist eine Kosten-Frage: Speicherplatz gegenüber Geschwindigkeit (Rechnerauslastung). |
Ah, so na ja vielen Dank für :idea: !
jaevencooler - Fr 22.07.05 10:20
Moin, Moin,
Zitat: |
Da wir hier beim Thema Char sind, wieso ist es nicht sinnvoller Varchar verwenden da ja dabei nur die länge des Strings gespeichert wird also man spart Speicherplatz!
|
Naja, das leider nicht ganz, die Datenbank reserviert zumindestens immer den max. Speicherplatz den das Datenfeld benötigen könnte. Wenn du jedoch große Stringdaten zu speichern hast, ist auf jeden Fall das Varchar2 feld die zu wählende Option, spart Platz auf der Platte.
Das gilt im übrigen auch für Float Felder, egal ob du sagt das Feld soll 15 Stellen, 5 Stellen oder 10 Stellen haben, die Datenbank reserviert immer die gleiche maximale Floatlänge.
Zitat: |
Und Char wenn die daten gespeichert werden werden denn bis zur definierten länge Leerzeichen angehängt?
|
Es ist nicht die Frage des Speicherns, sondern die Frage des auslesen !
Wenn Du ein Char Feld ausliest, dann wird die Datenfeldlänge ausgelesen, liest Du ein Varchar2 aus dann wird die Länge des gespeichterten Strings ausgelesen, die datenbank impliziert sozusagen ein Trim() :lol:
Grundsätzlich kann man sagen, ein Varchar2 ist einem Char immer vorzuziehen, es sei denn Deine daten sind nur 1-5 zeichen lang, oder Du benötigst immer eine feste Länge der Daten.
beste Grüße
Michael
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!