回答

收藏

instr()函数SQLITE是否适用于Android?

技术问答 技术问答 37 人阅读 | 0 人回复 | 2023-09-13

我想在android上现有的sqlite数据库上执行以下操作,该数据库的构建方式类似于该列:id — rule — path —someotherdata& z  z; m6 F7 k4 d, S& T
现在,规则例如包含文件名的一部分(或者只是一些琐碎的东西,例如“ mypicture”,也可能是文件类型,例如“3 S+ Z' k% y) [, |% f$ @! b5 z( _
jpg”)。现在我想做的是,我想编写一个查询,该查询将获取我的所有规则,其中包含输入字符串的一部分。我尝试了以下示例:字符串值=“
1 W& J: `) q# I% Tsomepicturefilename.jpg”
) |0 s% N7 p( _0 E; v% D: s& z我的声明:
* O" t' g1 Q- e3 P"SELECT DISTINCT * FROM " + TABLE_RULES + " WHERE instr('"+ value + "',rule)!=0 ORDER BY " + KEY_ID+ " DESC;"# T3 W0 g, f1 `) i2 I! B2 f  y# ?1 Q4 q+ b
该语句在Java中,因此应在该语句中插入“值”。' d# ^  B1 J4 ^) z: Q  k( p; x6 t
但是,这不起作用。我对sql或sqlite不太熟悉,没有人有tip =;)谢谢。/ P% k" q& z' z: Z
编辑:我也尝试过charindex,它也不起作用。
5 e9 R3 l7 i6 H& v2 r编辑:这样更详细的例子。给出以下数据库。
. ?" d# \1 b$ w+ Wid --- rule ---% D3 @- a6 C& Y6 L4 n8 q
1      "jpg"
; b  v7 Z7 f% a) G) m5 k2     "ponies"
" ~) G5 @% ~- w3     "gif"4 f5 k, q8 p; k: @
4     "pdf"$ i/ b2 \5 \) f$ `# Y- G
现在,用户输入文件名。我们说“ poniesAsUnicorns.jpg”。因此,“poniesAsUnicorns.jpg”是我的输入字符串,并且查询应同时匹配id#1和id#2,因为“! j, k  s9 E4 T' k
poniesAsUnicorns.jpg”同时包含“ jpg”和“ ponies”. E1 |1 c3 m2 H0 {3 R& S
我希望这澄清了我想要的。9 Q- E+ b2 {+ U6 P4 X8 N2 n  D: P
编辑:这也是我尝试过的:. T- X7 A+ A3 C0 Y
String statement = "SELECT DISTINCT * FROM " + TABLE_RULES4 p& [! P5 Z$ T8 s4 E5 R5 E
            + " WHERE charindex(rule,'" + value/ e) s2 S9 i# J$ \9 c( X. g
            + "') > 0 ORDER BY " + KEY_ID + " DESC;";
: {/ N8 X1 C( W( D: X' N但会引发“无此操作”异常。* U# ?( b7 W% P
               
! g' B! x) g1 g2 k& o# `- _; N解决方案:
6 E' k3 {- ^8 w                9 g1 K& H0 A, X! \& L' U: [: i

5 ^0 i, Z9 I& ?
5 d" Z$ z# y9 X                AFAIKinstr()不可用,因此您可以使用:
7 c" ~8 [! @) E! O' x% fselect * from table where replace("poniesAsUnicorns.jpg", rule, "") != "poniesAsUnicorns.jpg";
: L1 {3 E1 i  p: b* h0 i" [或不区分大小写的匹配项:6 E5 q+ J  q/ s3 g  z+ G  ]
select * from table where replace(upper("poniesAsUnicorns.jpg"), upper(rule), "") != upper("poniesAsUnicorns.jpg");
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则