Неожиданный результат SQL при смешивании чисел и строк [дубликат]

неопределенная ссылка на WinMain@16 или аналогичную «необычную» main() ссылку на точку входа (особенно для ).

Вы возможно, пропустили, чтобы выбрать правильный тип проекта с вашей реальной IDE. IDE может захотеть связать, например. Проекты приложений Windows для такой функции точки входа (как указано в недостающей ссылке выше) вместо обычной int main(int argc, char** argv);.

Если ваша среда IDE поддерживает Plain Console Projects , вы может захотеть выбрать этот тип проекта вместо проекта приложения Windows.


Здесь case1 и case2 обрабатываются более подробно из реальный мир проблема.

3
задан yossi 13 February 2014 в 20:04
поделиться

3 ответа

Ответы на ваши первые три вопроса: да, да и нет.

Когда строка 'text' преобразуется в число, она становится значением 0.

Документация, описывающая преобразование типов, здесь здесь .

Для вашего запроса:

SELECT table.* 
FROM table 
WHERE id='text';

Правило зафиксировано в этой выдержке из документации :

Во всех остальных случаях аргументы сравниваются как числа с плавающей запятой (реальные).

Другими словами, это фактически эквивалентно:

WHERE id = 0.0
4
ответ дан Gordon Linoff 25 August 2018 в 21:19
поделиться

Как и любая СУБД, она делает неявное преобразование.

Для другого типа, согласно документации MySQL, вам нужно использовать функцию convert / cast http: //dev.mysql. com / doc / refman / 5.0 / en / cast-functions.html

Вот пример из SO: Преобразование текста в число в запросе MySQL

1
ответ дан Community 25 August 2018 в 21:19
поделиться

MySQL по умолчанию обрабатывает 1 и «1» одинаково, но вы можете изменить это, установив поведение MySQL в режим Strict.

set @@GLOBAL.sql_mode  = "STRICT_ALL_TABLES";
set @@SESSION.sql_mode = "STRICT_ALL_TABLES";

или вы можете установить эти переменные в файле my.cnf быть постоянным в sql_mode = ''. Таким образом MySQL будет вызывать ошибку, если используется неправильный тип. Прочтите http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html для более подробной информации

3
ответ дан Sam D 25 August 2018 в 21:19
поделиться
Другие вопросы по тегам:

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