Выбор плавания в MySQL

Нет никакого семантического различия; тенденция в стандартах находится к использованию id, а не name. Однако существуют различия, которые могут привести предпочитать name в некоторых случаях. Предложения спецификации HTML 4.01 следующие подсказки :

Использование id или name? Авторы должны рассмотреть следующие проблемы при решении, использовать ли id или name для имени привязки:

  • идентификационный атрибут может действовать как больше, чем просто имя привязки (например, селектор таблицы стилей, обрабатывая идентификатор, и т.д.).
  • Некоторые более старые агенты пользователя не поддерживают привязки, созданные с идентификационным атрибутом.
  • атрибут имени позволяет более богатые имена привязки (с объектами).

25
задан Gumbo 19 August 2009 в 19:52
поделиться

5 ответов

Преобразование в десятичное сработало для меня:

SELECT * FROM table WHERE CAST(price AS DECIMAL) = CAST(101.31 AS DECIMAL);

Тем не менее, вы можете в первую очередь подумать о том, чтобы просто сделать столбец price DECIMAL. DECIMAL обычно считается лучшим типом для работы с денежными значениями.

42
ответ дан 28 November 2019 в 18:10
поделиться

Это не работает, потому что float по своей сути неточен. Фактическое значение, вероятно, похоже на «101.3100000000001». Вы можете сначала использовать ROUND (), чтобы округлить его до двух разрядов, или еще лучше использовать тип DECIMAL вместо float.

11
ответ дан 28 November 2019 в 18:10
поделиться

Никогда не используйте числа с плавающей запятой для денег.

9
ответ дан 28 November 2019 в 18:10
поделиться

Возможно, что-то вроде этого:

SELECT * FROM table WHERE ident='ident23' AND ABS(price - 101.31) < .01;
-1
ответ дан 28 November 2019 в 18:10
поделиться

Это работает?

SELECT * , ROUND( price, 2 ) rounded
FROM table
WHERE ident = 'ident23'
HAVING rounded = 101.31
-1
ответ дан 28 November 2019 в 18:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: