[英]Android SqLite: Select Rows Where Values Exists in Another Database Table
我的应用程序中有两个 sqlite数据库。 如果特定列的值存在于另一个数据库的表中,我想从表中选择所有行。
这就是我所拥有的:
// Code to retrieve the string of items
Cursor cr = dbA.rawQuery("SELECT GROUP_CONCAT(Code, ',') FROM Favourites",
null);
cr.moveToFirst();
String Codes = cr.getString(0); // Returns "A, B, D, S"
// Code to return a table where the rows are in the string
cr = dbB.rawQuery("SELECT * FROM Favourites WHERE Code IN ('" + Codes + "')",
null);
return cr;
这会导致错误,因为代码变量中的每个值都没有引号。 变量是“A,B,D,S”,它应该是“'A','B','D','S'”。
问题是:我是否必须在字符串中的每个项目周围手动添加撇号,或者是否有其他方法可以使用光标或其他方式来执行此操作,感觉就像我采取了长篇大论的方法。
我会用
String Codes = "'" + cr.getString(0).replace(", ","','") + "'";
SQL撇号'
被转义为''
所以你可以写:
SELECT GROUP_CONCAT('''' || Code || '''', ',')
''''
是撇号和||
的转义撇号 连接两个字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.