Ok jag hade en bugg i min webshop som ställde till med att personnr (t.ex 840206-xxxx) och email (t.ex apa@apa.nu) hamnade i varandras vält i databasen på vissa ställen.
hur gör jag för att byta tillbaka på ett smidigt vis?!
kanske hör bättre hemma i asp?!
UPDATE
Tabell
SET
PersonNr = Epost,
Epost = PersonNr
Det där skulle inte jag våga pröva (med mindre än att LarsG eller något annat vandrande lexikon ;) skrev det)! Rimligtvis sätter väl SQL den ena posten först, och då blir det liktydigt med:
PersonNr = Epost,
Epost = Epost // För det står ju då i personnummer enligt föregående kommando.
Dessutom skrev ConnyFox att sammanblandningen skett på "vissa ställen", medan ovanstående förslag byter överallt! :o
Jag tror att jag skulle skrivit ut värdena och ändrat rad för rad om det inte är hundratals rader det rör sig om. (Alltså genom att ange värdena.)
Ok kan ju bara kolla om det ligger ett '@' i personnr-fältet och byta ut de raderna.
Självklart ska man inte köra den update-satsen utan att testa först. Starta en transaktion, kolla hur det ser ut och rulla tillbaka. När det verkar funka kör man bara update-satsen.
BEGIN TRAN
UPDATE
Person
SET
PersonNr = Epost,
Epost = PersonNr
WHERE
PersonNr LIKE '%@%'
SELECT * FROM Person WHERE PersonNr LIKE '%@%'
ROLLBACK TRAN
Gäller det samtliga poster? I så fall kan du ju enkelt byta namn på fältet.
I annat fall kan du skapa en tempkolumn, eller en temptabell kanske är ännu smidare. Skyffla datan dit. Gör ändringen på den kolumnen du inte har sparad och flytta sedan från din temptabell till kolumnen där det skall vara. Men allt beror på förutsättningar, vad du vet och hur många poster det gäller etc.
255 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e