Dostaję dziwny błąd 'okrojona nieprawidłowa wartość INTEGER' kiedy uruchomić następujące zapytanie UPDATE:MySQL okrojona nieprawidłowa wartość INTEGER "
update tbl
set projectNumber = right(comments, 7)
where createdBy = 'me'
and length(CONVERT(right(comments, 7), SIGNED INTEGER)) = 7
and CONVERT(right(comments, 7), SIGNED INTEGER) > 0
and CONVERT(right(comments, 7), SIGNED INTEGER) is not null
and createdOn > '2011-01-31 12:00:00'
and projectNumber is null
projectNumber jest varchar (10).
Po uruchomieniu go jako wybór prosty nie otrzymuję błędu i wyniki są zgodne z oczekiwaniami. Jakieś pomysły? Zasadniczo próbuję zaktualizować pole ProjectNumber, w którym koniec komentarzy w zaimportowanych notatkach to 7 znaków numerycznych (ale numer projektu nie jest zawsze numeryczny, dlatego pole to varchar (10)).
interesujące. Mówi kod błędu 1292 (jak na przykład), ale mogę potwierdzić, że aktualizacja * nie * działa. Czy muszę mieć możliwość przerywania ostrzeżeń w aktualizacjach? Będę dalej kopać. –
Podejrzewam, że twój serwer działa w trybie "TRADITIONAL' SQL, który konwertuje wszystkie ostrzeżenia na błędy. http://dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html#sqlmode_traditional – Mchl
Dobrze. Właściwie zdecydowałem się po prostu użyć wyrażenia regularnego (i prawego (komentarze, 7) REGEXP '^ [0-9] + $') i zapomnieć o konwertowaniu nonsensu. Działało dobrze. Dziękuję bardzo za Twoją pomoc. –