jensgebken
Goto Top

SQL Tabelle - Werte bearbeiten

Hallo Gemeinschaft

habe eine Tabelle, die so aussieht
meta_id___post_id____meta_key___________________meta_value
38144_____2147_______price_______________________47.243
41456_____2305________payment_method_title___Rechnung

usw.

nun möchte ich bei allen Einträgen meta_key=price, dass die Nachkommastellen aus 2 Stellen gekürzt wird

Content-Key: 5306433529

Url: https://administrator.de/contentid/5306433529

Printed on: May 9, 2024 at 03:05 o'clock

Mitglied: 5175293307
Solution 5175293307 Jan 12, 2023 updated at 09:47:40 (UTC)
Goto Top
UPDATE TabelleXYZ
SET meta_value = round(meta_value,2)
WHERE meta_key = 'price';  

https://www.w3schools.com/sql/sql_update.asp
Member: em-pie
Solution em-pie Jan 12, 2023 at 09:57:55 (UTC)
Goto Top
Moin,

Und als nächstes mal noch den Datentyp der Spalte auf „Decimal(20,2)“ ändern…
Member: jensgebken
jensgebken Jan 12, 2023 at 10:13:23 (UTC)
Goto Top
Lieben Dank für die Info´s
Member: ukulele-7
ukulele-7 Jan 12, 2023 at 10:22:37 (UTC)
Goto Top
Zitat von @em-pie:

Und als nächstes mal noch den Datentyp der Spalte auf „Decimal(20,2)“ ändern…
Eher nicht, ist ja EAV. Die Spalte hält eben nicht nur numerische Werte sondern auch Zeichenketten. Das bedeutet aber natürlich das theoretisch "kaputte" Datensätze (meta_key = 'price' aber meta_value nicht numerisch) dazu führen können das das UPDATE scheitert - aber das findet man dann schon raus face-wink
Member: em-pie
em-pie Jan 12, 2023 at 10:32:41 (UTC)
Goto Top
@ukulele-7
Hast recht…. Hab daran nicht gedacht.

Bzgl des Updates: das könnte man ja „filtern“:
WHERE ISNUMERIC(meta_value) = 1
Member: ukulele-7
ukulele-7 Jan 12, 2023 at 10:39:40 (UTC)
Goto Top
Zitat von @em-pie:

Bzgl des Updates: das könnte man ja „filtern“:
WHERE ISNUMERIC(meta_value) = 1
Völlig richtig. Ich gehe aber schwer davon aus das die Integrität der Daten in der Anwendung geregelt wird, das ist leider häufig so. Dann kann man davon ausgehen das das richtig ist solange man nicht selbst was zerschossen hat. Und vermutlich geht es hier ja eher um eine einmalige Sache, wenn das UPDATE in einen Fehler läuft findet man einfach das Problem und korrigiert es.