Veröffentlicht 15. Oktober 200222 j hm, wusste keinen besseren Betreff...naja. ich möchte aus einer Tabelle Partner bei jedem Eintrag des Feldes Vorwahl anstatt der ersten beiden Stellen 00 ein Plus stehen haben. also anstatt '0049 531' möchte ich da '+49 531' stehen haben! das gilt aber nur für felder, die am anfang ein 00 haben! die tabelle Partner hat ca. 7000 einträge und ich möchte nicht jeden eintrag per hand ändern! weiß jemand, wie ich das in sql ändern kann??? kann mir vielleicht jemand ein beispiel geben oder das gleich auf das problem beziehen? danke gruß hoeen
15. Oktober 200222 j Wie wär's denn damit? update partner set vorwahl = '+' || substr(vorwahl, 3) where substr(vorwahl, 1, 2) = '00' ; MfG, AxlHammer
15. Oktober 200222 j Auf welcher DB machst Du das? Das hier gilt für die Sybase-DB: update dba.partner set vorwahl=string('+',substr(vorwahl,3)) where substr(vorwahl,0,2)='00'
15. Oktober 200222 j Original geschrieben von AxlHammer Wie wär's denn damit? Für welche DB? Kann mit der Syntax grad nix anfangen...
15. Oktober 200222 j Original geschrieben von Hoeen ne, arbeite mit einerm mysql datenbank! Probier mal aus, ob er die Anweisung schluckt, müsste eigentlich auch gehen. Und nicht vergessen: "rollback" kann Leben retten.
15. Oktober 200222 j Original geschrieben von Saga Probier mal aus, ob er die Anweisung schluckt, müsste eigentlich auch gehen. nö, leider nich :-( Original geschrieben von AxlHammer update partner set vorwahl = '+' || substr(vorwahl, 3) where substr(vorwahl, 1, 2) = '00' ; auch die anweisung läuft nicht! er sagt mir immer error in syntax near (vorwahl, 3) ... warum auch immer! eigentlich müsste es gehen! naja...
15. Oktober 200222 j Original geschrieben von Hoeen nö, leider nich :-( Schade...vielleicht kann Mysql die substr-Funktion nicht. Bin in Sachen Mysql aber auch nicht so bewandert, also musst Du leider auf die Spezialisten warten. Versuch war's jedenfalls wert. Hast Du mal in der Hilfe nach einem Analogon zu der substr-Funktion gesucht? Da muss es doch was ähnliches geben. Ansonsten schau da mal, ob Du über Google ein Tutorial ausfindig machen kannst. <edit>Ich hab jetzt mal das Forum meiner Berufsschule zu Rate gezogen, vielleicht ergibt sich da was. Was mir einfällt: Hast Du am Ende der Anweisung ein Semikolon gesetzt?</edit>
15. Oktober 200222 j Moin ! ne, leider kann mysql das Substr nicht, dafür Substring, was ja ähnlich ist.. UPDATE partner SET partner.vorwahl = '+' + SUBSTRING(partner.vorwahl, 3) WHERE LEFT(partner.vorwahl, 2) = '00'; gruß Christian
15. Oktober 200222 j Original geschrieben von tauron UPDATE partner SET partner.vorwahl = '+' + SUBSTRING(partner.vorwahl, 3)WHERE LEFT(partner.vorwahl, 2) = '00'; also ich verzweifel hier noch! ich hasse so kleine fehler, auf die man nie kommt... also folgendes problem: wenn ich jetzt die anweisung eingebe, macht er zwar die '00' weg, jedoch das + nicht hin... dann steht da also anstatt '00123457' nur '123457' hilfe??? ich könnte jetzt noch eine zweite anweisung machen, die vor den datensätzen ein + und ein leerzeichen macht!
15. Oktober 200222 j was für einen Datentyp hat "Vorwahl" ? Wenn es nämlich eine Zahl ist, nimmt er das + als Vorzeichen und lässt es dann beim Ausgeben der Zahl halt weg, du müsstest dafür String oder Char (weiss nicht mehr genau wie des bei mysql hies) nehmen. [Edit] nicht drüber nachgedacht, wenns von einem Zahlen-Typ wäre, gäbe es ja die führenden Nullen auch nicht..
15. Oktober 200222 j Original geschrieben von tauron '+' + SUBSTRING(partner.vorwahl, 3) Kann man das nicht noch in ein string(...) setzen? Vielleicht haette Hoeen dann auch nicht das Problem, dass jetzt zwar die Nullen weg sind, das + aber nicht erscheint.
15. Oktober 200222 j @Hoeen: Probier das mal aus: update vorwahl set vorwahl = CONCAT('+',substring(vorwahl,3, length(vorwahl)-2)) where substring(vorwahl,1,2) = '00'
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.