c#sqlite命令格式化

本文关键字:格式化 命令 c#sqlite | 更新日期: 2023-09-27 18:28:52

在我的数据库中,我有一个条目ABCCBAA

我的查询如下:

    string sql = SELECT * FROM signatures WHERE length(signature) BETWEEN 6 AND 8 AND signature LIKE ABCCBAA 
        OR length(signature) BETWEEN 6 AND 8 AND signature LIKE _BCCBAA 
        OR length(signature) BETWEEN 6 AND 8 AND signature LIKE A_CCBAA 
        OR length(signature) BETWEEN 6 AND 8 AND signature LIKE AB_CBAA 
        OR length(signature) BETWEEN 6 AND 8 AND signature LIKE ABC_BAA 
        OR length(signature) BETWEEN 6 AND 8 AND signature LIKE ABCC_AA 
        OR length(signature) BETWEEN 6 AND 8 AND signature LIKE ABCCB_A 
        OR length(signature) BETWEEN 6 AND 8 AND signature LIKE ABCCBA_

我正在用这个1查询搜索很多记录,所以请原谅我做得太过火了。

我已经在W3Schools的例子中尝试了这个查询,并且它在上下文中运行良好。我知道我使用的是SQLite,而不是SQL,但在语法方面还没有完全做到。

我希望这些OR语句中的任何一个都能获取结果,但由于语法错误,我甚至还无法执行它。目前我正在获得

"SQL逻辑错误或缺少数据库

没有这样的栏:ABCCBAA"

为什么将其用作列名?其他例子让我相信这个问题是正确的。

我已经玩了很长时间了,所以这可能是我没有正确把握的简单事情。

c#sqlite命令格式化

您需要引用字符串,例如:

WHERE length(signature) BETWEEN 6 AND 8 AND signature LIKE 'ABCCBAA'

此外,您不需要那么多OR length(signature) BETWEEN 6 AND 8。只需做一些类似的事情:

string sql = @"SELECT * FROM signatures 
               WHERE length(signature) BETWEEN 6 AND 8 
               AND (signature LIKE 'ABCCBAA' OR signature LIKE '_BCCBAA' ...)";