Как отмечает Краген, сортировки не обязательно будут выходить в правильном порядке.
Сравнения тоже не обязательно будут работать. Если поле определено, скажем, как десятичное (8,2), и я задаю ему значение «37,20», а позже я напишу «выбрать ..., где цена = 37,2», результат будет истинным. Но если я храню varchar 37.20 и сравниваю его с 37.2, он не будет равным. Точно так же, если один или другой имеет начальные нули.
Вы можете решить эти проблемы, убедившись, что приложение всегда хранит числа с фиксированным числом десятичных разрядов и дополняется начальными нулями. О, и убедитесь, что у вас есть последовательное соглашение о хранении знаков минус. Но тогда каждое место в приложении, которое пишет в это поле, должно быть уверено, что оно следует точно таким же правилам. Конечно, мы могли бы сделать это, но почему? Движок базы данных сделает это за нас, если мы просто объявим поле числовым. Мол, да, я МОГУ косить газон ножницами, но зачем мне это делать?
Я не понимаю, что говорит твой друг, преимущество должно быть. Более простая связь между приложением и базой данных? Как? Возможно, он использовал какой-то нетрадиционный язык или интерфейс базы данных, который не мог прочитать числовые значения из БД. У меня никогда не было проблем с этим. На самом деле, просто сказав это, я задаюсь вопросом: не случилось ли это: что в его предыдущей компании они использовали какой-то язык или инструмент, который не мог прочитать десятичные числа из базы данных из-за проблемы с реализацией, единственный способ, которым они могли это получить? чтобы работать было объявить все числа как varchar, и теперь он уходит, думая, что это в целом хорошая идея.