Недавно я столкнулся с проблемой, когда запрос вызывал полное сканирование таблицы, и у него появилось другое определение, которое, как я думал, было VARCHAR, а не INT. При запросе с «string_column = 17« запрос запустился, он просто не мог использовать индекс. Это действительно бросило меня в петлю.Преобразование типа MySQL: почему float самый низкий общий тип знаменателя?
Так что я отправился на поиски и нашел то, что случилось, поведение я видел это согласуется с тем, что MySQL's documentation говорит:
Во всех других случаях аргументы сравниваются как с плавающей точкой (вещественных) чисел.
Так что мой вопрос ... почему плавание?
Я мог видеть попытку преобразования чисел в строки (хотя точки на странице MySQL, приведенные выше, являются вескими причинами). Я также мог понять, что я выбрал какую-то ошибку или создал предупреждение (мои предпочтения). Вместо этого он с радостью работает.
Так зачем же конвертировать все в поплавок? Это из стандарта SQL или по другой причине? Может ли кто-нибудь пролить свет на этот выбор для меня?
Возможно, аргументы: any_column = 17 пытается сравнить any_column с числом, поэтому давайте посмотрим, будем ли мы качать any_column на число, а затем сравниваем. – pts
Да, эта вещь фиксирует столбец. На самом деле это была ошибка с моей стороны, в первую очередь, поскольку у меня было неправильное определение столбца в моей голове. Этот вопрос заключается в том, чтобы выяснить, есть ли какая-то очевидная причина, что это может быть сделано, о чем я не думаю. Я бы скорее получил ошибку, которая заставила его тихо попытаться. – MBCook