Mam tabelę MySQL z kolumnami {{ X0}} typ, np DECIMAL(20,4)
. Chcę zmniejszyć precyzję dla tej kolumny na DECIMAL(10,2)
. Czy jest łatwy sposób sprawdzenia, czy nie spowoduje, że nie będzie to spowodować żadnej utraty danych (tj. Wszystkie istniejące wartości znajdują się w precyzji)?
2 odpowiedzi
Wyjmujesz miejsca "Mantissa". Nowy typ nie będzie mógł przechowywać wartości poza 99999999.99
.
Dlatego jest bardzo łatwy w celu weryfikacji, czy będziesz tracić dane. Sprawdź, czy jakakolwiek wartość przekracza ten limit przy użyciu:
select * from my_table where my_column > 99999999.99
Edytuj dla miejsc dziesiętnych:
W przypadku 2 miejsc dziesiętnych na końcu możesz sprawdzić za pomocą:
select *
from my_table
where round(my_column * 100) <> my_column * 100
Lub:
select
from my_table
where right(format(my_column, 4), 2) <> '00'
Podejście opisane przez @Theimpaler jest dźwięk, o ile nie można zmienić danych między czasem przebiegłym tym zapytaniem, a czas na przedefiniowanie pola. Jeśli istnieje możliwość zmiany danych w środku procesu, musisz zrobić więcej.
Możliwe podejście:
Podobne pytania
Nowe pytania
mysql
MySQL to darmowy system zarządzania relacyjnymi bazami danych (RDBMS) o otwartym kodzie źródłowym, który wykorzystuje język SQL (Structured Query Language). NIE UŻYWAJ tego znacznika dla innych baz danych, takich jak SQL Server, SQLite itp. Są to różne bazy danych, które używają własnych dialektów SQL do zarządzania danymi.