piotrek24
27.02.2012, 09:17:39
Mam tabele która zawiera pola ENUM w postaci ('','1','3','5','7') i chce te pola przekonwertować do typu INT i wszystko było by fajnie gdyby nie to że podczas zmiany ENUM na INT polu INT zostaje przypisany indeks pola ENUM (czyli 1,2,3,4,5), a nie jego wczesniej podane wartości.
Jest jakas mozliwosc zeby przekonwertowac pola ENUM do INT bez uzycia php czyli poprzez zapytanie sql?
Jedyne co wymyslilem to przeniesienie wartosci ENUM najpierw do pola VARCHAR i nastepnie do INT, ale chcialbym jeszcze "krócej".
ferrero2
27.02.2012, 14:57:53
SELECT CAST(pole_w_tabeli AS INT) FROM...
a tak próbowałeś ?
piotrek24
27.02.2012, 19:43:06
Hmmm Twój kod działa, ale po zamianie INT na CHAR. Bo pole enum przy konwersji do stringa własnie zostawia wartosc pola, a przy konwersji do liczby - indeks. A INT nie tylko ze nie dziala ale w ogóle wywala błąd. No ale niewazne. Wazne ze z char dziala jak trzeba. Dzieki za pomoc.
PS A jak przekonwertowac wszystkie pola w tabeli bez koniecznosci wymieniania nazw wszytskich pól? (tabela ma 57 pól..)
INSERT INTO tabela1 SELECT CAST(* AS char) FROM tabela2
nie działa...