WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Hjälp med ett mysql query (https://www.wn.se/forum/showthread.php?t=8637)

fabian 2005-06-25 14:46

UPDATE members SET username = username+'_OLD' WHERE id = 1;



Vet att det inte är korrekt... men nu kanske förstår vad jag vill ha gjort...

Jag vill lägga till _OLD på användarnamnet som är ett text-fält i mysql-databasen... Någon som har ett tips på hur jag skall göra?

WizKid 2005-06-25 14:50

Du måste använda CONCAT. Så det blir "UPDATE members SET username = CONCAT(username, '_OLD') WHERE id = 1;"

fabian 2005-06-25 14:52

Citat:

Originally posted by WizKid@Jun 25 2005, 14:50
Du måste använda CONCAT. Så det blir UPDATE members SET username = CONCAT(username, _OLD) WHERE id = 1;


Aha, så heter det :)

Tack så mycket, precis vad jag ville göra.

fabian 2005-06-25 14:58

Hur gör jag föresten om man vill göra tvärtom? Altså ta bort en viss text, eller dom X sista bokstäverna?

WizKid 2005-06-25 15:34

Antagligen SUBSTRING tillsammans med LENGTH. Mer om sträng funktioner i MySQL hittar du på http://dev.mysql.com/doc/mysql/en/string-functions.html

"username = LEFT(username, LENGTH(username)-4)" eller "username = SUBSTRING(username, 0, LENGTH(username)-4)" borde nog fungera.

fabian 2005-06-25 19:43

Perfekt :)

Nu skall jag krångla lite till.

Hur gör jag för att utföra det första queryt (UPDATE members SET username = CONCAT(username, '_OLD') WHERE id = 1;) på dom som INTE slutar på _OLD?

where username != *_OLD
;)

grazzy 2005-06-25 23:50

Vad skall man säga fabian.. manualen finns på http://mysql.com/doc/

Du kan faktiskt göra på tre olika sätt lite beroende på vilken data det är du lagrar, hursomhelst:

UPDATE blalba SET yadayada WHERE 1 != 1;
UPDATE blalba SET yadayada WHERE 1 <> 1;
UPDATE blalba SET yadayada WHERE NOT (1 = 1); -- paranteser lite överflödiga men klargör sambandet.

Lycka till. Det lönar sig att titta i manualen, då kanske du lär dig något annat när du ändå letar efter ett visst svar.

edit: Sär skrivning

WizKid 2005-06-26 00:05

"UPDATE members SET username = CONCAT(username, '_OLD') WHERE username NOT LIKE '%\_OLD';" borde fungera. Däremot låter det som ett väldigt dumt sätt att göra som du gör. Av det jag förstått låter det mycket smartare att ha ett fält i tabellen som heter old som du sätter till 0 eller 1. Framförallt sista LIKE-queryn kan gå väldigt långsamt eftersom den inte kan använda sig av index.


Alla tider är GMT +2. Klockan är nu 00:57.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson