wierzę masz ten błąd, ponieważ pole year_exp
jest DECIMAL(2,2)
i chcesz DECIMAL(4,2)
. DECIMAL(2,2)
oznacza liczbę dokładności 2, z dokładnością do 2 miejsc po przecinku. Ale ta liczba ma 4 cyfry precyzji.
Ten link do MSDN mówi o dokładności dziesiętnej.
http://msdn.microsoft.com/en-US/library/ms187746(v=SQL.90).aspx
Oto szybki test z podobnymi wynikami (wykonane w SQL Server 2008, ale myślę, że jesteś na MySQL ...)
1) utworzono tabelę z kolumną testu:
CREATE TABLE testtable (testcolumn DECIMAL(2,2))
2) Ran iNSERT ...:
INSERT INTO testtable (testcolumn) VALUES (23.45)
... i pojawił się ten błąd ...
Msg 8115, Level 16, State 8, wiersz 1
arytmetyczny błąd przepełnienia konwersji numerycznej typu dane liczbowe.
(KOMENTARZ: jeden z moich fave błędów ... "nie można przekonwertować liczbę na numer ..." ha ha)
3) zmiany w kolumnie do odpowiednich specyfikacji
ALTER TABLE testtable ALTER COLUMN testcolumn DECIMAL(4,2)
4) Ponownie uruchom tę samą instrukcję wstawiania. To działa.
Proszę dać mi znać, jeśli to pomaga.
Jaka jest wartość ** wstawionego ** rekordu teraz? – inhan
@inhan thanksinhan. Wartość to 0,99 – Misty
Użyj 'decimal (4,2)', aby naprawić swój błąd i przeczytaj, jak określić poprawne wartości dla tego typu danych w dokumentach MySQL. –