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

Tim*_*ald 0 sql sqlite android-sqlite

给定像这样wort的表中的列中的条目woerter

henlo
oenlh
olneh
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个sqlite命令,列出所有word包含的条目h e l o(例如,实际上这些字母总是不同) - 按此顺序.所以在这个例子中结果应该是

henlo

因为有

heñlo

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

ssssshssssssessssssslsssossssso

会在结果中,

ssosssssossssshssssssesssssssls

不会.

到目前为止我的方法:

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

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

Ben*_*Ben 6

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

SELECT * FROM woerter WHERE wort LIKE '%h%e%l%o%'
Run Code Online (Sandbox Code Playgroud)

这将搜索包含N个字符,后跟hN个字符,后跟e等的任何单词.

%通配符匹配任何数量的字符,并通过将所有这一切在一个单一的条件下可以确保字符是正确的顺序.

引用文档:

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

您的条件不允许字符出现在字符串中的任何位置.由于百分比符号是通配符,like 'h%'因此只有在字符串h开头处才会为真.同样用like '%o'o必须是在字符串的结尾.

这意味着您要选择以字符串开头h,e以及l字符串中的某个位置开头的任何单词o.