невозможно написать запрос со строкой, не равной в realm swift - PullRequest
0 голосов
/ 06 октября 2018

Я изменяю свою базу данных SQLite в область, но я не могу преобразовать запрос SQLite в область

Я пытался использовать != и NOT CONTAINS, но это не сработало.как этого добиться?

ниже мой старый запрос SQLite, я пытаюсь преобразовать это в базу данных DB

select COUNT(*) from (tabledata)
where  ifnull(length((KEY_DATA)), 0) <> 0 and
       lower((KEY_DATA)) <> lower('N/A') and
       lower((KEY_DATA)) <> lower('NA') and
       lower((KEY_DATA)) <> lower('not applicable')

я пытаюсь как

let countpredicate = NSPredicate(format: "data.length > 0 AND data != [c]'N/A' AND data != [c]'NA' AND data != [c]'not applicable'")

чточто не так в этом?

Ответы [ 3 ]

0 голосов
/ 06 октября 2018

Ваш предикат сконструирован неправильно:

Заменить

( данные не пусто )

data.length > 0 до data != ''

и

( данные не содержат )

data != [c]'<insert text>' до !(data contains[c] '<insert text>')

Финал:

NSPredicate(format: "data != %@ && !(data contains[c] %@) && !(data contains[c] %@) && !(data contains[c] %@)", "", "N/A", "NA", "not applicable")
0 голосов
/ 06 октября 2018

Измените свой код на:

let countpredicate = NSPredicate(format: "data.length > 0 AND data !CONTAINS[c] 'N/A' AND data !CONTAINS[c] 'NA' AND data !CONTAINS[c] 'not applicable'")

[c] означает регистр символов

0 голосов
/ 06 октября 2018

Я думаю, вам следует объединить [c] с операндом, а не строкой

let countpredicate = NSPredicate(format: "data.length > 0 AND data !=[c] 'N/A' AND data !=[c] 'NA' AND data !=[c] 'not applicable'")

Может быть, вы можете использовать IN

let countpredicate = NSPredicate(format: "data.length > 0 AND data NOT IN[c] ('N/A','NA','not applicable'")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...