2008-10-01 8 views
13

Mam tabelę użytkowników, która ma kolumnę z nazwą użytkownika składającą się z sześciocyfrowej liczby np. 675381, muszę poprzedzić zero dla każdej z tych nazw użytkownika, np. 0675381 będzie ostatecznym wyjściem z poprzedniego przykładu, czy istnieje zapytanie, które poradzi sobie z tym?Zapytanie MySQL do znaku poprzedzającego do każdego wpisu

Odpowiedz

27
UPDATE Tablename SET Username = Concat('0', Username); 
+0

Dzięki, użytkownik brian dostał go pierwszy, ale powinienem był powiedzieć, raczej przed dodaniem, wydaje się, że usunął swój wpis już teraz! Twoje zdrowie. – Stuart

+1

Podałeś przykład: 675381 powinno stać się 0675381 – daniels

4

jakiego typu jest kolumna?

jeśli jest to typ string, spróbuj coś takiego:

UPDATE your_table SET column_name=concat('0',column_name); 
+0

Dzięki, daniels był tylko odrobinę szybszy. – Stuart

1

masz na myśli "Dołącz"? tj. dodać go z przodu?

Czy kolumna jest numeryczna? Czy zawsze chcesz wydrukować 7 znaków?

Zakładając, że coś takiego będzie działać dla zapytania:

select LPAD(CONVERT(username, CHAR), 7, '0') 

Jeśli kolumna jest znaków, CONVERT() część jest niepotrzebny, wystarczy LpAd nazwa użytkownika.

Jeśli chcesz trwale zmodyfikować wartość w tabeli, musisz upewnić się, że kolumna jest typu znaku i UPDATE, używając powyższego.

+0

Tak, chodziło mi o to, że był to tylko varchar, więc rozwiązanie Danielsa jest idealne. Dzięki. – Stuart

0

Być może zechcesz użyć CONCAT_WS ("," 0 ", nazwa użytkownika), ponieważ jeśli istnieje wartość pusta, otrzymasz wartość NULL zamiast" 0 ". To chyba nie jest problem, ale coś, czego nauczyłem się na własnej skórze.

Powiązane problemy