c#sqlite命令格式
在我的数据库中有一个条目c#sqlite命令格式,c#,sqlite,C#,Sqlite,在我的数据库中有一个条目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
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,但还没有完全使用语法
我希望这些或语句中的任何一个都能获取结果,但由于语法错误,我甚至还不能执行它。目前我正在恢复健康
“SQL逻辑错误或缺少数据库
没有这样的专栏:ABCCBAA“
为什么要将其用作列名?其他的例子让我相信这个问题是正确的
我已经玩了很长时间了,所以可能是一些简单的东西我没有正确理解。您需要引用字符串,例如:
WHERE length(signature) BETWEEN 6 AND 8 AND signature LIKE 'ABCCBAA'
而且,在6到8之间不需要太多的或长度(签名)。只需做如下操作:
string sql = @"SELECT * FROM signatures
WHERE length(signature) BETWEEN 6 AND 8
AND (signature LIKE 'ABCCBAA' OR signature LIKE '_BCCBAA' ...)";
您需要引用字符串,例如:
WHERE length(signature) BETWEEN 6 AND 8 AND signature LIKE 'ABCCBAA'
而且,在6到8之间不需要太多的或长度(签名)。只需做如下操作:
string sql = @"SELECT * FROM signatures
WHERE length(signature) BETWEEN 6 AND 8
AND (signature LIKE 'ABCCBAA' OR signature LIKE '_BCCBAA' ...)";
看起来您正在尝试进行某种模糊字符串匹配。可能有更好的方法,如果我是你,我会查找它,例如,\u
匹配单个字符,因此你的查询永远不能匹配不同长度的内容。@TimS。感谢您给我指出模糊匹配,我将看看在sql查询中可以做些什么。关于长度,我用一些更难看的代码解决了这个问题:)看起来你在尝试一种模糊字符串匹配。可能有更好的方法,如果我是你,我会查找它,例如,\u
匹配单个字符,因此你的查询永远不能匹配不同长度的内容。@TimS。感谢您给我指出模糊匹配,我将看看在sql查询中可以做些什么。关于长度,我已经用一些更难看的代码解决了这个问题:)我尝试过这样做,但是得到了大量不同的语法错误,引号造成了严重的破坏,并用.Replace(“,@“”)来逃避它,或者由于参数不起作用,它永远不会正确映射。无论如何,我会再试一次。你应该使用SQL参数,而不是转义。这太傻了。。。通过正确的参数化解决了我所有的问题。谢谢你的提示,我会看看我能做些什么来让它不难看。我试过这么做,但是得到了大量不同的语法错误,引号造成了严重的破坏,并用.Replace(“,@”)来逃避它,或者因为参数不起作用,它永远不会正确映射。无论如何,我会再试一次。你应该使用SQL参数,而不是转义。这太傻了。。。通过正确的参数化解决了我所有的问题。谢谢你的建议,我会看看我能做些什么使它不难看。