Björn: Bei Ausgabe aus einer mysql Datenbank Zahl mit 0 ergänzen und 3 stellen abschneiden

Moin,,

ich habe ein Zahlenproblem, es geht hierbei um deutsche Gemeindeschlüssel Zahlen. Diese sind in meiner msql Datenbank als 6 und 7 stellige zahlen vorhanden.

Bei der Ausgabe soll, wenn die Zahl nur 6 stellig ist eine 0 vorgesetzt werden.

1234567 0123456

Anschliessend soll immer die letzten zwei Zahlen abgeschnitten werden.

12345 01234

So das ich die richtige Gemeinde Kennzahl erhalte.

Jetzt habe ich es schon mit SELECT SUBSTR probiert, aber das ist glaube ich nur von vorne. Ich bräuchte das von hinten her.

Auch weis ich nicht wie ich eine 0 zur Ausgabe dazubekomme.

Björn

  1. Moin Björn,

    ich habe ein Zahlenproblem, es geht hierbei um deutsche Gemeindeschlüssel Zahlen. Diese sind in meiner msql Datenbank als 6 und 7 stellige zahlen vorhanden.

    Sollen das wirklich Zahlen oder nicht lieber CHAR(7) sein?

    Bei der Ausgabe soll, wenn die Zahl nur 6 stellig ist eine 0 vorgesetzt werden.

    1234567
    0123456

    Anschliessend soll immer die letzten zwei Zahlen abgeschnitten werden.

    12345
    01234

    So das ich die richtige Gemeinde Kennzahl erhalte.

    Jetzt habe ich es schon mit SELECT SUBSTR probiert, aber das ist glaube ich nur von vorne. Ich bräuchte das von hinten her.

    SUBSTR und SUBSTRING können alles, was du an dieser Stelle brauchst, sofern weder LEFT noch RIGHT tun, was du möchtest.

    Auch weis ich nicht wie ich eine 0 zur Ausgabe dazubekomme.

    Du möchtest also von links Zeichen hinzufügen, auf englisch left pad.

    Viele Grüße
    Robert

  2. Hallo Björn,

    eine Aufbereitung für die Anzeige ist normalerweise keine Sache für die Datenbank. Eine Datenbank liefert Daten, eine Anwendung kümmert sich um die Aufbereitung.

    Du hast das Thema mit mysqli getaggt. Heißt das, dass Du die Datenbank mit PHP abfragst? In dem Fall solltest Du die Aufbereitung mit PHP durchführen und die DB damit nicht behelligen.

    Aber wenn Du unbedingt willst...

    Deine Gemeindekennziffer steckt also in einer INT Column? Kein Problem, MYSQL ist sehr konvertierfreudig.

    Ich nenne die Spalte mit der Gemeindekennziffer mal GK.

    LPAD funktioniert gleich gut mit INT oder VARCHAR-Spalten und kann auch mit '0' auffüllen. Danach hast Du einen garantiert 7 Stellen langen String.

    Und darauf wendest Du dann SUBSTR oder SUBSTRING an (die sind synonym), um die ersten 5 Stellen herauszuholen.

    Ohne die automatische Typkonvertierung von MYSQL müsstest Du die GK-Spalte zuerst nach CHAR konvertieren, das ginge mit CAST(GK AS CHAR(7))

    Rolf

    --
    sumpsi - posui - obstruxi