SQL Befehl gesucht
Sven
- mysqli
Guten Tag,
ich möchte in einer Artikel-DB alle bei allen Artikeln, die in Spalte "Lieferant" die Nummer 12345 haben, in der Spalte "Artikelnummer" das letzte zeichen der Artikelnummer löschen, falls dieses letzte Zeichen ein Punkt ist.
Wie gehe ich das am besten an?
Gruß, Sven
Mein Versuch scheitert:
UPDATE artikel
SET Artikelnummer = LEFT(Artikelnummer,LENGHT(Artikelnummer)-1)
Where RIGHT(Artikelnummer,1) = '.'
AND LieferantenID = 12345
FUNCTION LENGHT existiert nicht
FUNCTION LENGHT existiert nicht
Ich hätte für die ganze Nummer nach Mysql Replace Regex oder so geschaut, aber keine Ahnung genau.
Notfalls: Mysqldump. Search & Replace via Regex und den Dump dann zurückspielen.
Ich hätte für die ganze Nummer nach Mysql Replace Regex oder so geschaut, aber keine Ahnung genau.
Ich nicht. Die „Stringarithmetik“ ist schlicht dü[nn|mm]er als die mächtig-gewaltige Regex-Maschine und damit schneller - was besonders dann Auswirkung hat, wenn es viele Zeilen sind...
Wenn wir schon dabei sind:
… WHERE RIGHT(Artikelnummer,1) = '.'
Das macht einen Fullscan. Sollte das a) zu lange dauern und b) oft gemacht werden, dann kann es effektiver sein, eine zusätzliche Spalte mit umgekehrtem Text vorzusehen, diese mit zu füttern und natürlich ebenfalls zu indexieren und mit
… WHERE Artikelnummer_Reversed LIKE ".%"
zu sieben. (Auch Artikelnummer_Reversed muss dann mit bearbeitet werden...)
Hallo Mitleser 2.0,
Klingt logisch
Ungefähr 57.600.000 Ergebniss
Au, wie peinlich. Aber die Englisch sprechende Welt hat da sowieso ihre Macken.
Meine persönliche Nemesis ist ja heigth
…
Rolf
es gibt Varianten: laid statt lay, lien statt lain... Die Progressive Form lying gilt gemeinerweise für beide. I am lying about lying in my bed… ↩︎
LENGHT → LENGTH
LENGHT → LENGTH
Ok, danke. 👍
Jetzt läufts.
Sven
Mach Dir nichts draus. Das menschliche Hirn spekuliert: Man liest deshalb, was man schreiben wollte. Nicht was man vertippt hat. Eine andere Person sieht das sofort.
Mach Dir nichts draus. Das menschliche Hirn spekuliert: Man liest deshalb, was man schreiben wollte. Nicht was man vertippt hat. Eine andere Person sieht das sofort.
Ich habe da wirkliche Probleme.
Length, Heigth, usw....
Warum kann mysql nicht einfach LEN
verwenden?
Egal... danke für Deine/Eure Adleraugen. 👍😉
Hallo
Mein Versuch scheitert:
UPDATE artikel SET Artikelnummer = LEFT(Artikelnummer,LENGHT(Artikelnummer)-1) Where RIGHT(Artikelnummer,1) = '.' AND LieferantenID = 12345
FUNCTION LENGHT existiert nicht
Welche MySQL-Version betreibst du? Die Funktion LENGTH
ist Teil des MySQL-Sprachumfangs. Welchen Datentyp hat die Spalte mit der Artikelnummer?
[edit]: Mal abgesehen von deinem Typo (was meine Frage nach dem Datentyp obsolet macht) ist zu überlegen, ob für deinen Zweck eventuell CHAR_LENGTH
passender wäre. Zumindest, wenn es nicht beim zu entfernenden Punkt bleiben sollte.
Tschö, Auge