[+] SQL (MYSQL) zapytanie zmiany wierszy tabeli

Potrzebujesz pomocy z C, C++, perl, python, itp.
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

[+] SQL (MYSQL) zapytanie zmiany wierszy tabeli

Post autor: sethiel »

W tabeli mam różne wiersze między innymi abcde-abcde-abc-abcde, potrzebuję zrobić takie zapytanie SQL, które zamieni mi abcd na 1234 aby wiersz wyglądał 1234e-1234e-abc-1234e.
Jak podejść do tego.
Na razie mam początek:

Kod: Zaznacz cały

SELECT * FROM tabela WHERE kolumna LIKE "%abcd%";
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post autor: Bastian »

Kod: Zaznacz cały

UPDATE tabela SET kolumna='1234e' WHERE kolumna IN ( SELECT kolumna FROM tabela WHERE kolumna LIKE "%abcd%");
mlyczek
Junior Member
Posty: 979
Rejestracja: 02 sierpnia 2006, 19:17

Post autor: mlyczek »

Moim zdaniem to zagnieżdżone zapytanie jest niepotrzebne. Można po prostu tak:

Kod: Zaznacz cały

UPDATE tabela SET kolumna='1234e' WHERE kolumna LIKE "%abcd%";
Wtedy UPDATE zmieni tylko te wiersze w których kolumna pasuje do wzorca %abcd%
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

MySQL jest troszkę ubogi w funkcje, zatem proponuję takie rozwiązanie.
http://inspirationgeek.com/blog/index.p ... dans-Mysql
I na przyszłość się też pewnie przyda.
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

Post autor: sethiel »

Dzięki.
Mlyczek,Bastian - ale kolumna wtedy bedzie o takiej wartosci, nie bedzie rekursywnie przetrząsał tekstu.
mariaczi - główny trzon funkcji translate to replace.
W końcu suma sumarum znalazłem:;

Kod: Zaznacz cały

update tabela set `kolumna`=( [B]replace[/B] (`kolumna`,'abcd', '1234')) where kolumna2 like "%do_poprawek%";
Teraz muszę z tego skrypt zrobić - dla jednych pół godziny dla innych tydzień :) - poki co drugi dzień.
ODPOWIEDZ