0

Table[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

谢谢!

4

2 回答 2

0

我认为这应该可以使用LIKE

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

(SQL Server 语法,但给出了总体思路)

于 2013-05-13T14:45:34.867 回答
0

instr函数相当于 SQLite的indexOf.

或者,您可以使用类似LIKE的东西:

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

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

请注意,比较字符串应该以分隔符 (#) 开头结尾,如果您不想匹配data为子字符串,但始终作为整个字符串。

您可能想同时尝试两者,看看哪个更快。

于 2013-05-13T14:45:52.353 回答