我正在将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'")
这有什么问题?
答案 0 :(得分:0)
我认为您应该将[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'")
答案 1 :(得分:0)
您的谓词没有正确构建:
替换
( 数据 不为空)
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")
答案 2 :(得分:0)
将代码更改为:
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]
表示区分大小写