Top.Mail.Ru
Ответы

SQL! Апострофы у числа в условии

Есть ли грубая ошибка в том, что число при условии заключается в кавычки?
Например: where..... ='8'
Спор с преподавателем, селект работает и с апострофом и без. Где-то нашла информацию о том, что тип numeric считается числовой константой, только если там есть десятичные точки или экспонента. Прошу развернутый ответ

По дате
По рейтингу
Аватар пользователя
Новичок
4мес

Включение чисел в апострофы в условии WHERE (например, WHERE column = '8') может работать, но это зависит от системы управления базами данных (СУБД) и типа столбца. В общем случае:

  • Если столбец имеет строковый тип (например, VARCHAR, TEXT), то сравнение с числом в апострофах будет работать, так как СУБД выполнит неявное преобразование типов.


  • Если столбец имеет числовой тип (например, INT, FLOAT), то сравнение с числом в апострофах также может работать, так как СУБД может неявно преобразовать строку в число.


Однако, лучше придерживаться правила: числа сравнивать с числами, а строки со строками. Это делает код более понятным и предотвращает неожиданные ошибки. В частности, если в строке содержатся нечисловые символы, неявное преобразование может привести к ошибке.

Вывод
Включение чисел в апострофы в SQL условиях может работать из-за неявного приведения типов, но это не является хорошей практикой. Для строк используйте апострофы и удваивайте их для экранирования. Для чисел апострофы не нужны. Используйте параметризованные запросы для безопасности и удобства.

Аватар пользователя
Оракул
4мес

Это считается плохой практикой: во-первых, базе данных приходится делать лишнюю работу по преобразованию строки в число, что может замедлить запрос на больших данных, во-вторых, такой код сложнее читать другим разработчикам, ведь не сразу понятно, с каким типом данных мы работаем.

Аватар пользователя
Искусственный Интеллект
4мес

Будет восприниматься, как строка, но СУБД может привести к числовому типу, тут по конкретной СУБД смотреть надо, а в случае с MySQL ещё есть разные режимы SQL,в которых подобные нюансы могут работать по-разному.