Похоже, что ,
в 123,456
предназначен для десятичного разделителя, но SQLite обрабатывает все это как строку (то есть '123,456'
, а не 123.456
).Имейте в виду, что система типов SQLite немного отличается от системы SQL, так как значения имеют типы, но столбцы не :
[...] В SQLite тип данныхЗначение связано с самим значением, а не с его контейнером.[...]
Таким образом, вы можете спокойно поместить строку (которая выглядит как действительное число в некоторых локалях) в настоящий столбец, и ничего плохого не произойдет до тех пор, пока позже.
Выможно исправить процесс импорта, чтобы интерпретировать десятичный разделитель, как требуется, до того, как данные попадут в SQLite, или вы можете использовать replace
, чтобы исправить их при необходимости:
sqlite> select -'123,45';
-123
sqlite> select -replace('123,45', ',', '.');
-123.45