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

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:39 Uhr.