我一直試圖使用字符通配符"_"
在sqlite的條件和接近「跳出高位」我已經嘗試了rawQuery和查詢各種硬編碼參數和軟編碼參數。它似乎忽略了字符通配符"_"
並返回所有行或根本沒有。rawQuery通配符`「_」`不工作
保持的數據是在表示oblect的特徵例如一列可以表示對象
("red,orange,yellow,green,blue,indego,violet,black")
和行的顏色的顏色數列可以是「01001000」,這意味着它是橙色和藍色但不是紅色,黃色等。其他列包含單個字符,即大小包含s,m或l(映射小,中,大),數據庫包含每種類型的多個列,這種想法儘可能具有緊湊的數據庫。
我的第一個意圖是通過將我的select的'where'作爲字符串傳遞給rawQuery(myselect,null)
,其中mySelect在代碼中被編譯以響應用戶選擇的幾個特徵。 即
的mywhere字符串被編譯返回: - colour1像"_1__10__"
和顏色2像"___1_01__"
和大小= "l"
並傳遞給rawQuery
db.rawQuery("SELECT _id , name FROM widgets WHERE " + mywhere , null);
以下工作正常使用Firefox的SQLite的經理
聲明SELECT _id , name FROM widgets WHERE colour1 like "_1__10_" and colour2 like "__1_01___" and size ="m"
爲了調查我已經將查詢降低到where子句中的一列
myselect ="SELECT _id ,name,FROM widgets where colour1 like \"1_______\"";
cursor = db.rawQuery(myselect,null);
沒有返回
myselect ="SELECT _id ,name,FROM widgets where colour1 like \"%1_______%\"";
cursor = db.rawQuery(myselect,null);
返回行,但不是全部具有1的第一個字符(我預期這個)
myselect ="SELECT _id ,name, FROM widgets where colour1 like ?";
String[] whereArguments = { "1_______" };
cursor = db.rawQuery(myselect,whereArguments);
沒有返回
myselect ="SELECT _id ,name, FROM widgets where colour1 like ?";
String[] whereArguments = { "%1_______%" };
cursor = db.rawQuery(myselect,whereArguments);
返回行,但不是全部在第一行都有1炭
但我不從
myselect ="SELECT _id ,name, FROM widgets where colour1 like ?";
String[] whereArguments = { "10000000" };
cursor = db.rawQuery(myselect,whereArguments);
得到任何行,也有含「10000000」
是否有任何人有任何解決方案行?我嘗試過搜索,但似乎rawQuery和查詢在Android中有可疑的功能。
我發現我的問題!我導出了我在Firefox的SQLite管理器中創建的數據,以在Android中創建SQLite數據庫,但沒有意識到每一列的每一端都附加了一個空格,所以我認爲數據中包含「10000000」,實際上它保存着「10000000」 – user1108608 2011-12-22 14:57:39