2014-05-01 4 views
0
name <> myname 

Я чувствую себя немного глупо, задавая этот вопрос, но я использую предикат выше в подзапросе. Я ожидал увидеть все строки, где имя не было равно имени. Однако строки, которые имеют значение NULL для имени, не возвращаются. Это правильное поведение?Основные данные Неравный предикат

+0

Если вы играете со строками, '<>' может быть плохим решением. См. 'LIKE',' NOT' и т. Д. – Larme

ответ

4

Да, этого можно ожидать. См Null Values в «Predicate Руководства по программированию»:

Сравнения предикат не соответствует какому-либо значению с нулем, кроме нулевой (nil) или NSNull нулевого значения (то есть, ($value == nil) возвращает YES если $value является nil).
...
Если вы хотите, чтобы соответствовать нулевым значениям, вы должны включать в себя определенный тест в дополнении к другим сравнениям, ...

Это означает, что как"name = myname" и "name <> myname" вычисляться НЕТ, если name NULL.

Вы можете изменить свой предикат

name <> myname OR name = NULL 

для охвата обоих случаев.

Смежные вопросы