Mysql: разница между intvalue = '1' и intvalue = 1 - PullRequest
2 голосов
/ 15 января 2011

В столбце int есть ли разница между выполнением ..

SELECT .. int = '1' и SELECT .. int = 1, а что предпочтительнее?

Ответы [ 4 ]

3 голосов
/ 15 января 2011

Используйте int = 1, потому что int = '1' внутренне преобразуется в int = cast('1' as int)

1 голос
/ 15 января 2011

Не эксперт MySql, но я бы сказал, что первый (int = '1') вызовет преобразование строки в целое число перед сравнением.

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

Кроме того, конвертация не гарантируется успешно (или дает правильные результаты).

0 голосов
/ 15 января 2011

Первый (int = '1') сравнивает строку с целым числом (поэтому mysql автоматически преобразует это). Секунды один (int = 1) сравнивают целое число с полем целого числа (преобразование не требуется).

Так что второй предпочтительнее

0 голосов
/ 15 января 2011

Одно отличие состоит в том, что если ваш запрос имеет переменную, которая может быть пустой, вы получите это

SELECT .... int = ''

против

SELECT .... int = 

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

...