如何使用 iOS Swift 在 Azure DB 中执行 SQL 字符串包含查询?

Posted

技术标签:

【中文标题】如何使用 iOS Swift 在 Azure DB 中执行 SQL 字符串包含查询?【英文标题】:How to perform SQL string contains query in Azure DB with iOS Swift? 【发布时间】:2019-11-11 01:59:14 【问题描述】:

我正在尝试使用 ios swift 在 Azure DB 中执行包含查询的字符串。

但是,我收到以下错误: 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“无法解析格式字符串“CONTAINS(title,"panda")"'

以下是我执行 Azure SQL 查询的代码:

static func tableQueryOrderBy(_ tableName: String, queryCondition: String,
                                  orderBy: String, isDescending: Bool,
                                  fetchOffset: Int, fetchLimit: Int,
                                  queryCallBack: @escaping ([AnyObject]?) -> ()) 

        guard let delegate = UIApplication.shared.delegate as? AppDelegate,
            let client = delegate.client else  return 

        // condition
        guard let table = client.table(withName: tableName) else  return 
        guard let query = MSQuery(table: table) else  return 
        if queryCondition != "" 
            query.predicate = NSPredicate(format: queryCondition)
        
        isDescending ? query.order(byDescending: orderBy) : query.order(byAscending: orderBy)
        query.fetchOffset = fetchOffset
        query.fetchLimit = fetchLimit
        query.read  result, error in
            if let err = error 
                // print("Query failed: ", err.localizedDescription)
                queryCallBack(nil)

             else if let items = result?.items 
                // print("Query succeeded!")
                queryCallBack(items as [AnyObject]?)
            
        
    

【问题讨论】:

【参考方案1】:

终于找到了@Sanket Ray 的示例,将他/她的答案复制粘贴在这里:

let firstName = NSPredicate(format: "firstName CONTAINS[c] %@", searchText)
let lastName = NSPredicate(format: "lastName CONTAINS[c] %@", searchText)

let orCompoundPredicate = NSCompoundPredicate(orPredicateWithSubpredicates: 
[firstNamePredicate,lastNamePredicate]

参考:NSPredicate: Combine CONTAINS with IN

【讨论】:

以上是关于如何使用 iOS Swift 在 Azure DB 中执行 SQL 字符串包含查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何检测最大 dB Swift

如何在没有 microsoft azure 用户的情况下使用 swift 获取访问令牌?

如何在 IOS Swift 中使用 SQLite 使用 FMDB 处理多个线程

如何使用 azure 流分析将 cosmos db 中的值更新为输出?

Azure AD B2C 刷新令牌/ID 令牌 iOS Swift 4

如何配置我的 Azure Functions 环境,以便可以在 Python 代码中使用 Cosmos DB 客户端?