php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 15-10-2006, 10:34
Semaphor
 Newbie
Links : Onlinestatus : Semaphor ist offline
Registriert seit: Apr 2006
Beiträge: 7
Semaphor ist zur Zeit noch ein unbeschriebenes Blatt
Standard Inhalte einer Spalte verändern

Moin moin!

Bei diversen Einträgen einer Spalte wurden mal die führende Nullen vergessen.
Ich habe nun versucht diese im nachhinein zu ergänzen und zwar so:

UPDATE t_devices
SET d_msn = CONCAT('0',d_msn)
WHERE left(d_msn,3) = '200'

in meinem Beispiel sieht das dann so aus

ist Zustand:
20012345
20012346
20012347

soll:
020012345
020012346
020012347

Ergebnis:
020012345
020012345020012346
020012345020012346020012347

D.h. die Ergänzung mit der '0' funktioniert und auch die Einschränkung mit '200' tut wie sie soll, allerdings ist es mir schleierhaft, warum der Inhalt der vorherigen Felder mitgeschleppt wird

Somit die Frage wie man das verhindert oder ob es eine elegantere Methode gibt das 0-Problem zu lösen.
Mit Zitat antworten
  #2 (permalink)  
Alt 15-10-2006, 12:59
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Wieso speicherst du Zahlen als Strings? Wähle den passenden Datentyp (int) und formatiere die Zahlen bei der Ausgabe.
Mit Zitat antworten
  #3 (permalink)  
Alt 15-10-2006, 13:40
Semaphor
 Newbie
Links : Onlinestatus : Semaphor ist offline
Registriert seit: Apr 2006
Beiträge: 7
Semaphor ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die Idee ist zwar nicht ganz falsch, allerdings gibt es auch weitaus längere Nummern und ab und zu mal alphanumerische Zeichen.

z.B.: 10000000100223346
oder 010023-18G

somit bleibt nur string als Format übrig
Mit Zitat antworten
  #4 (permalink)  
Alt 15-10-2006, 14:49
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Tja okay, wenn ZEROFILL und BINARY ggf. in Kombination mit Spaltentyp CHAR nicht helfen, würde ich das als Bug bezeichnen, denn UPDATE ... SET x = x+1 WHERE x < 100 funktioniert ja auch so, daß x um 1 erhöht wird und zwar nur einmal, nicht etwa so lange bis x >= 100.
Mit Zitat antworten
  #5 (permalink)  
Alt 22-10-2006, 22:02
Semaphor
 Newbie
Links : Onlinestatus : Semaphor ist offline
Registriert seit: Apr 2006
Beiträge: 7
Semaphor ist zur Zeit noch ein unbeschriebenes Blatt
Unhappy

Hat denn vielleicht doch noch jemand mal eine Idee ?

Ich bin doch mit Sicherheit nicht der Erste der mal ein paar vorhandene Daten verändern möchte
Mit Zitat antworten
  #6 (permalink)  
Alt 22-10-2006, 23:17
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

ich habe eben über phpmyadmit mit Mysql 5.0.21 experementiert und es hat einwandfrei funktioniert.

update table1 set a=concat("0",a) where left(a,3)="200"

welche Version hast du eigentlich?
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #7 (permalink)  
Alt 23-10-2006, 23:37
Semaphor
 Newbie
Links : Onlinestatus : Semaphor ist offline
Registriert seit: Apr 2006
Beiträge: 7
Semaphor ist zur Zeit noch ein unbeschriebenes Blatt
Question

Hi Slava !

Bei mir läuft das hier -> Verbunden mit MySQL 4.1.9-max auf localhost

Ich hatte schon den dunklen Verdacht das das mehr ein undocumented Feature als ein normales Verhalten ist.

Bleibt die Frage wie man das ganze über einen anderen Weg doch noch hin bekommt
Mit Zitat antworten
  #8 (permalink)  
Alt 24-10-2006, 01:06
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Versuchs über einen Umweg: Erzeuge eine neue Tabelle und fülle sie mit

SELECT CONCAT('0',d_msn) FROM t_devices WHERE left(d_msn,3) = '200'

Wenn die Werte okay sind, spielst du sie in die Ursprungstabelle zurück.
Mit Zitat antworten
  #9 (permalink)  
Alt 15-11-2006, 21:33
Semaphor
 Newbie
Links : Onlinestatus : Semaphor ist offline
Registriert seit: Apr 2006
Beiträge: 7
Semaphor ist zur Zeit noch ein unbeschriebenes Blatt
Unhappy

so, da isser wieder; sorry für die pause, aber Urlaub muss auch mal sein

Danke für den Vorschlag, das Ganze sieht dann so aus:

INSERT INTO t_devices_temp ( dt_device_id, dt_msn)
SELECT d_device_id, CONCAT('0', d_msn) FROM t_devices WHERE left(d_msn,3) = '200'

Ergebnis:

45 20012345
46 20012346
50 20012347

d.h. WHERE sucht zwar die richtigen Zeilen heraus, das CONCAT wird aber ignoriert (die device_Id ist allerdings richtig)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 an


PHP News

Projektmanagement Damals und Heute
Projektmanagement Damals und HeuteWerfen Sie einen Blick auf das, was sich verändert hat, und entdecken Sie, wo die Zukunft dieses Gebietes hinsteuert.

18.01.2021 | Berni

Arbeitsmanagement-Tools
Arbeitsmanagement-ToolsWarum jedes Team Arbeitsmanagement-Tools benötigt. Man schätzt, dass 25% eines durchschnittlichen Mitarbeiter-Tages durch ineffiziente Arbeit vergeudet werden.

11.12.2020 | Berni


 

Aktuelle PHP Scripte

Formmailer Bootstrap 4

Mit dem Formmailer kann man sich eMails über seine Seite zukommen lassen.

08.07.2021 arne-home | Kategorie: PHP/ Formular
Fehlerseite Bootstrap 4

Bei Aufruf einer nicht existierenden Seite, teilen Sie Besuchern mit einer eigenen Fehlerseite mit, dass die gewünschte Seite nicht gefunden wurde. Die eigene Fehlerseite sollte dasselbe Design wie die Website haben. Zudem sollte ein Link zur Startseite a

04.07.2021 arne-home | Kategorie: PHP/ Counter
Upload Bootstrap 4

Mit dem PHP - Uploadscript kann man schnell und einfach Bilder und Dateien auf den Webserver hochladen.

04.07.2021 arne-home | Kategorie: PHP/ File
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:21 Uhr.