SQLite查询以获取匹配的搜索关键字之后的下一个可用字符的列表

时间:2019-02-27 18:49:58

标签: android sqlite android-sqlite

如何查询sqlite数据库以获取字符串字段中search关键字之后的下一个可用字符列表。 例如,如果搜索关键字是“和”

,然后将字符串作为名称列表:

  1. y Xyz
  2. r ew Xyz
  3. Xyz And o n
  4. Xyz Mirand a

然后我应该得到字符[y,r,o,a]。

我尝试使用 substr(names,1,1)进行查询,但是substr需要指定起始索引,该起始索引在每个字符串中都不同。是否可以使用sqlite查询获取这些字符?

2 个答案:

答案 0 :(得分:1)

您需要substr()instr()

select 
substr(names, instr(lower(names), lower('and')) + length('and'), 1) nextchar 
from tablename
where 
  names like '%' || 'and' || '_%'

请参见demo
您可以将'and'替换为上述查询中所需的任何字符串。

答案 1 :(得分:1)

您可以利用 instr 函数来确定子目录的开始,例如:-

SELECT *, substr(names,instr(lower(names),'and') + length('and'),1) AS onechar
FROM mytable WHERE names LIKE ('%and%');

一个工作示例:-

DROP TABLE IF EXISTS mytable;
CREATE TABLE IF NOT EXISTS mytable (names TEXT);
INSERT INTO mytable VALUES('Andy Xyz'),('Andrew Xyz'),
('Xyz Andon'),('Xyz Miranda');
SELECT *, substr(names,instr(lower(names),'and') + length('and'),1) AS onechar FROM mytable WHERE names LIKE ('%and%');

结果为:-

enter image description here

根据您的预期结果。