boesi666
Goto Top

VB6 SQL Umgang mit Feld Postleitzahl als Integer - keine führende 0 möglich

sql und die postleitzahlen ...

spreche unter vb6 mittels sql befehlen eine access db an unf habe hier schon lange eine spalte PLZ als Typ Integer in der Datenbank. Ursprünglich habe ich das posleitzhalen feld als integer erstellt, da ich auch mal auswertungen machen wollte wo der postleitzahlenbereich hätte zwischen einem Bereich X und Y hätte sein können und das als Typ integer echt klasse war.

Nun aber schon lange das vernachlässigte Problem, dass wenn mal eine Postleitzhal beim anlegen mit einer 0 anfängt, diese dann nicht so gespeichert wird, da der datenbank feld typ ja integer und nicht string ist.

wie geht ihr mit so einem feld um? legt ihr das immer als string an?, wenn ja:
-wie macht man dann solche sql abfragen mit select blabla where postleitzahl > XXXX and Postleitzahl < YYYYY ??
-kann man solch eine spalte wo schon werte drin sind nachträglich ändern/umwandeln?

Content-ID: 186218

Url: https://administrator.de/contentid/186218

Ausgedruckt am: 23.11.2024 um 05:11 Uhr

wiesi200
wiesi200 10.06.2012 um 18:43:02 Uhr
Goto Top
Hallo,
Im großen und ganzen ja das ist ein string
rubberman
rubberman 10.06.2012 um 18:50:24 Uhr
Goto Top
Hallo boesi666.

Ich verstehe das Problem nicht. Wenn du die PLZ als Integer ablegst, fehlen logischerweise führende Nullen. Welches Problem hast du damit? Entsprechende Abfragen dann eben auch als Integerwert. Und falls du mal für eine Ausgabe (damit es schöner aussieht) die Nullen brauchst hängst du sie (nach Konvertierung/Casting zum String) wieder davor. So what?

Grüße
rubberman
wiesi200
wiesi200 10.06.2012 um 19:14:45 Uhr
Goto Top
Das Problem ist wenn man's als Integer macht sind Ausländische Codes. Auch wenn's im Moment vielleicht nicht gebraucht wird. Wer kennt die Zukunft? Mann würde sich hier die Erweiterungsmöglichkeiten nehmen.
boesi666
boesi666 10.06.2012 um 19:43:12 Uhr
Goto Top
Zitat von @rubberman:
... Welches Problem
hast du damit? Entsprechende Abfragen dann eben auch als Integerwert. Und falls du mal für eine Ausgabe (damit es
schöner aussieht) die Nullen brauchst hängst du sie (nach Konvertierung/Casting zum String) wieder davor. So what?

Grüße
rubberman

ja problem ist ja genau wenn ich dann die plz mal wieder zur anzeige auf rechnung, etc. brauche, dann solche städte wo die plz mit 0 beginnt dann ja nicht korrekt ausgegeben werden.

statt 01234 würde dann fälschlicherweise 1234 nur ausgegeben werden.

kann man das im select befehl bei einer sql abfrage mit so nem iif befehl automatisch mit auffüllen lassen? wenn z.b. die plz nur 4 ziffern hat oder kleiner 10000 ist ?
boesi666
boesi666 10.06.2012 um 19:46:20 Uhr
Goto Top
Zitat von @wiesi200:
Das Problem ist wenn man's als Integer macht sind Ausländische Codes. Auch wenn's im Moment vielleicht nicht
gebraucht wird. Wer kennt die Zukunft? Mann würde sich hier die Erweiterungsmöglichkeiten nehmen.

ob das hierbei ginge mit einem einzigen sql befehl das plz feld von integer ins beispielsweise string(20) umzuverw3andeln OHNE die bestehenenden einträge zu gefährden?

z.B. so :
ALTER table Kunden ALTER COLUMN plz Text(20)
rubberman
rubberman 10.06.2012 um 20:29:40 Uhr
Goto Top
Hallo boesi666.

Da du das in einer Access Datenbank tun willst, kannst du es per Hand an einer neuen Datenbanktabelle durchkauen. Natürlich kannst du das Format der Spalte ändern (einfach in die Entwurfsansicht gehen und probieren). Das bringt dir aber im Zweifelsfall nichts für die bereits vorhandenen Daten. Immerhin fehlt da die vorangestellte Null im Wert und die wird auch nicht wie durch Zauberhand wieder erscheinen.

Grüße
rubberman
rubberman
rubberman 10.06.2012 um 20:35:22 Uhr
Goto Top
Hallo boesi666,

entweder im SQL Statement selbst (zB.: addiere 100000, caste zum String, verwende die rechten 5 Stellen), oder in deinem VB Code.

Grüße
rubberman
dog
dog 10.06.2012 aktualisiert um 21:03:47 Uhr
Goto Top
Also mir fällt keine sinnvolle Verwendung von plz > X and plz < Y ein.
PLZs sind ja regional untergliedert:
3xxxx Mitteldeutschland
34xxxx Großraum Kassel
usw.

Also wäre eine Sinnvolle Abfrage nach PLZ um z.B. Leute aus einer Region zu finden plz LIKE '34%'.

Natürlich kann man sich damit auch prima in den Fuß schießen (genauso wie bei Zahlen auch), da z.B. 37xxx und 99xxx direkt aneinander liegen was aus der Zahl nicht ersichtlich ist.
Wenn du also Abfragen nach Region machen willst brauchst du viel eher Geo-Daten.