2015-12-24 2 views
-2

хранить некоторые числа с плавающей точкой формат, как 1,30 в VARCHAR поле с именем высоты, а затем я хочу найти данные по высоте, так что я использовалMySQL-магазин float в поле varchar и не может найти?

select * from table where height = '1.30' 

для запроса. Но ничего не вернулось. И потом я подумал, может быть, я должен запросить с float, поэтому я изменил SQL на

select * from table where height = 1.30 

и получил правильный результат.

Как это могло случиться? Я имею в виду, что произошло, когда хранилище, которое плавает в поле varchar.

+1

«Я храню некоторые числа с плавающей точкой формат, как 1,30 в поле VARCHAR». - почему ? –

+0

Я тоже не знаю почему. – Jesse

+0

Возможно, вы фактически сохранили '1.3000'. То же самое, если рассматривать как float, но не как строку. – Barmar

ответ

2

Возможно, что ваш столбец varchar имеет некоторые ведущие или конечные пробелы. Если вы храните десятичное число как varchar и ставите передние или конечные пробелы, ваши критерии поиска никогда не будут соответствовать. поэтому ' 1.30' не может быть равен '1.30'.

Однако, если вы сравните его только 1.30, то mysql первым бросил его, и они сравнивают. Следовательно, вы получаете результат. (Это то, что я думаю, пожалуйста, поправьте меня, если я ошибаюсь

Смотрите следующий пример

http://sqlfiddle.com/#!9/503c2/1

+0

Вы правы, столбец имеет ведущее пространство .. спасибо вам. – Jesse

+1

Если ответ сработал для вас, пожалуйста, примите его путем нажатия g символ «tick» слева от ответа, чтобы он мог быть закрыт. благодаря –

Смежные вопросы