如何使用sqlkata将大括号添加到where-query

How to add braces to where-query using sqlkata

我有以下顾虑: 我已经处理 sqlkata 几个小时了,但我没有解决以下问题: 我想创建一个带有链接 where 子句的 select 语句。但是,我找不到设置大括号的方法。我当前的 SQL 语句如下所示:

SELECT [id], [filename], [extension], [ocr_full_ready], [pdf_type] FROM [document] 
WHERE [extension] IN ('.eml', '.msg', '.docx', '.xlsx', '.doc', '.xls', '.txt', '.lnk') 
AND [ocr_full_ready] IS NULL OR [ocr_full_ready] BETWEEN 3 AND 9 
AND NOT (LOWER([filename]) like 'gobd%') 
ORDER BY [id] DESC

不过我需要的是:

SELECT [id], [filename], [extension], [ocr_full_ready], [pdf_type] FROM [document] 
WHERE [extension] IN ('.eml', '.msg', '.docx', '.xlsx', '.doc', '.xls', '.txt', '.lnk') 
AND ([ocr_full_ready] IS NULL OR [ocr_full_ready] BETWEEN 3 AND 9)
AND NOT (LOWER([filename]) like 'gobd%') 
ORDER BY [id] DESC

注意第三行添加的大括号。

我当前的 sqlkata 语句如下所示:

Dim query = qf.Query("document").Select("id", "filename", "extension", "ocr_full_ready", "pdf_type") _
                        .WhereIn("extension", New String() {".eml", ".msg", ".docx", ".xlsx", ".doc", ".xls", ".txt", ".lnk"}) _
                        .WhereNull("ocr_full_ready").OrWhereBetween("ocr_full_ready", 3, 9) _
                        .WhereNotLike("filename", "Gobd%") _
                        .OrderByDesc("id") _
                        .Limit(1)

我相信这不是一个难题。我想我一直想念解决方案。 感谢所有帮助过的人。

根据 Nested Conditions 来自 SqlKata 的文档:

To group your conditions, just wrap them inside another Where block.

因此在您的示例中它将是:

Dim query = qf.Query("document").Select("id", "filename", "extension", "ocr_full_ready", "pdf_type") _
    .WhereIn("extension", New String() {".eml", ".msg", ".docx", ".xlsx", ".doc", ".xls", ".txt", ".lnk"}) _
    .Where(Function(w) w.WhereNull("ocr_full_ready").OrWhereBetween("ocr_full_ready", 3, 9)) _
    .WhereNotLike("filename", "Gobd%") _
    .OrderByDesc("id") _
    .Limit(1)