gpt4 book ai didi

android - instr() 函数 SQLITE for Android?

转载 作者:太空狗 更新时间:2023-10-29 12:47:46 25 4
gpt4 key购买 nike

我想在 android 上现有的 sqlite 数据库上执行以下操作,该数据库就是这样构建的colomns: id --- rule --- path --- someotherdata

现在的规则包含文件名的一部分(或者只是一些琐碎的东西,比如“mypicture”,或者还有一个文件类型,比如“jpg”)。现在我想做的是,我想编写一个查询,它获取我的所有规则,其中包含输入字符串的一部分。我尝试了以下示例:String value = "somepicturefilename.jpg"

我的声明:

"SELECT DISTINCT * FROM " + TABLE_RULES + " WHERE instr('"+ value + "',rule)!=0 ORDER BY " + KEY_ID+ " DESC;"

语句在 java 中,因此“值”应该插入到语句中。

但是,这不起作用。我不太熟悉 sql 和 sqlite,有没有人有提示=;)谢谢。

编辑:我也试过 charindex,也没有用。

编辑:所以一个更详细的例子。给出了以下数据库。

id --- rule ---
1 "jpg"
2 "ponies"
3 "gif"
4 "pdf"

现在用户输入一个文件名。让我们说“poniesAsUnicorns.jpg”。所以“poniesAsUnicorns.jpg”是我的输入字符串,查询应该同时匹配 id#1 和 id#2,因为“poniesAsUnicorns.jpg”同时包含“jpg”和“ponies”

我希望这能阐明我想要的。

编辑:这也是我尝试过的:

String statement = "SELECT DISTINCT * FROM " + TABLE_RULES
+ " WHERE charindex(rule,'" + value
+ "') > 0 ORDER BY " + KEY_ID + " DESC;";

但抛出“没有这样的操作”异常。

最佳答案

AFAIK instr() 不可用,因此您可以使用:

select * from table where replace("poniesAsUnicorns.jpg", rule, "") != "poniesAsUnicorns.jpg"; 

或者不区分大小写的匹配:

select * from table where replace(upper("poniesAsUnicorns.jpg"), upper(rule), "") != upper("poniesAsUnicorns.jpg");

关于android - instr() 函数 SQLITE for Android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16180117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com