选择其字符串中某处为“h”的所有条目,之后有一个`e`,`l`和`o`

时间:2014-11-06 13:00:25

标签: sql sqlite android-sqlite

给出表格wortwoerter列中的条目

henlo
oenlh
olneh

我正在寻找一个sqlite命令,列出包含word h e l的{​​{1}}的所有条目(例如,为了示例,那些字母总是不同的) - 按此顺序。所以在这个例子中结果应该是

  

henlo

因为有

o N he

换句话说:选择字符串中某处lo的所有条目,之后有hel。它不需要在它之后,而是在它之后的某个地方。例如:

  

ssssshssssssessssssslsssossssso

将在结果中,

  

ssosssssossssshssssssesssssssls

不会。

到目前为止我的方法:

  

SELECT * FROM woerter WHERE wort LIKE' h%'和麦芽汁一样'%e%'和   麦芽酒喜欢'%l%'和麦芽汁一样'%o'

这是有缺陷的,因为它没有正确地整合e和l的顺序,它需要h和o在开头和结尾。

1 个答案:

答案 0 :(得分:6)

您可以在字符串中间使用通配符

SELECT * FROM woerter WHERE wort LIKE '%h%e%l%o%'

这会搜索包含N个字符的任何字词,然后是h,后跟N个字符,然后是e等。

%通配符匹配任意数量的字符,并将所有这些字符放在一个条件中,以确保字符的顺序正确。

引用the documentation

  

LIKE模式中的百分号("%")匹配字符串中零个或多个字符的任何序列

您的条件不允许角色出现在字符串中的任何位置。由于百分比符号是通配符like 'h%',只有当h位于字符串的开头时才会为真。与like '%o'类似,o必须位于字符串的末尾。

这意味着您选择以h开头的任何字词,字符串中某处有el,并以o结尾。