0

在我的数据库中,我有一个条目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"

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

我已经玩了很长时间了,所以它可能很简单,我没有正确掌握。

4

1 回答 1

3

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

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' ...)";
于 2013-08-22T23:04:19.840 回答