如何查询像IndexOf这样的行

时间:2013-05-13 14:40:13

标签: android sqlite

表[id,data]
数据是这样的:

str[N]

where子句是这样的:

strs = 'str1#str2#str3#str4#str5......'  

如果我用'#'拆分它,我得到一个大阵列。然后我这样写:

select * from Table where data in(str1,str2,str3,str4,str5).......

长度可能非常大。这太慢了。我只想做:

select * from Table where 'str1#str2#str3#str4#str5......'.indexOf(data)!=-1

谢谢!

2 个答案:

答案 0 :(得分:0)

我认为应该可以使用LIKE

SELECT * FROM Table WHERE 'str1#str2#str3#str4#str5......' LIKE '%' + data + '%'

(SQL Server语法,但提供了一般的想法)

答案 1 :(得分:0)

instr函数是SQLite,相当于indexOf

或者,您可以使用类似LIKE的内容:

SELECT *
  FROM table
 WHERE '#str1#str2#str3#' LIKE '%#' || data || '#%'

...但我真的怀疑会更快。

请注意,如果你不想将data作为子字符串匹配,那么比较字符串应该以结束分隔符(#),但始终作为整个字符串。

你可能想要两者都看看哪个更快。