Вопрос по mysql – Есть ли причина не использовать <=> (нулевой безопасный оператор равенства) в mysql вместо =?

12

MySQL предоставляет хороший оператор<=> который работает с сравнениями, которые могут содержать нуль, такие какnull <=> null или жеnull <=> 5 и т.д., возвращая интуитивно понятные результаты, как многие языки программирования. В то время как обычный оператор equals всегда просто возвращает null, что ловит многих новых пользователей MySQL, таких как я, заблуждающихся.

Есть ли причина, по которой MySQL имеет и то, и другое, а не просто функциональность в<=> ? Кому действительно нужен оператор, который фактически не определен со встроенными языковыми типами?

Ваш Ответ

5   ответов
2

=> ? The operators are completely different from each other.

<=>Error: User Rate Limit Exceeded=Error: User Rate Limit Exceeded1Error: User Rate Limit ExceededNULLError: User Rate Limit ExceededNULLError: User Rate Limit Exceeded0Error: User Rate Limit ExceededNULLError: User Rate Limit ExceededNULL.

Who really needs an operator that is effectively undefined with built in language types?

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded cellige
Error: User Rate Limit Exceeded cellige
Error: User Rate Limit Exceeded
10

in language types?

Вы попросили несколько реальных примеров. Здесь ложный. Допустим, у вас есть молодежная программа для проживания или аналогичная программа, и одно из требований заключается в том, что дети проживают в одной комнате только с кем-то того же пола. В вашей базе данных есть пустое поле M / F, которое можно обнулять, потому что ваш фид данных неполон (вы все еще гоняетесь за некоторыми данными). Ваш код соответствия комнаты определенно не должен совпадать с учащимися, где t1.Gender & lt; = & gt; t2.Gender, потому что он может в конечном итоге найти двух детей неизвестного пола, которые могут быть противоположного пола. Вместо этого вы соответствуете, где они равны, а не равны нулю.

Это только один пример. Я признаю, что поведениеNULL и=Error: User Rate Limit ExceededNULLError: User Rate Limit Exceeded<=> оператор.

Error: User Rate Limit ExceededsmallError: User Rate Limit Exceeded
Error: User Rate Limit ExceedednullError: User Rate Limit Exceeded
6

ется в том, что в mySQL null означаетunknownError: User Rate Limit Exceededundefined значение.

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded
4

in language types?

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

Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededNULL. this will make sure, that this task is unassigned. which means: there is no possibility that there is a relation to the employees table.

еслиNULL = NULLError: User Rate Limit ExceededtrueError: User Rate Limit ExceededNULLError: User Rate Limit Exceeded

1

(TRUE, NULL, FALSE).

Error: User Rate Limit Exceeded

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