Mysql查找包含双字母的记录

时间:2016-07-12 13:15:06

标签: mysql regex

伙计我需要一个查询,列出所有那些至少有两个相同字母的记录。不幸的是

"REGEXP  '[a]|[b]|[c]|[d]|[e]|[f]|[g]|[h]|[i]|[j]|[k]|[l]|[m]|[n]|[o]|[p]|[q]|[r]|[s]|[t]|[u]|[v]|[w]|[x]|[y]|[z]';"

这个对我来说不起作用,对[a]{2}属性也不同。

有什么建议吗? 谢谢你的帮助

2 个答案:

答案 0 :(得分:2)

您可以使用此查询:

SELECT some_fields FROM some_table WHERE field REGEXP
'a{2}|b{2}|c{2}|d{2}|e{2}|f{2}|g{2}|h{2}|i{2}|j{2}|k{2}|l{2}|m{2}|n{2}|o{2}|p{2}|q{2}|r{2}|s{2}|t{2}|u{2}|v{2}|w{2}|x{2}|y{2}|z{2}';

它将返回some_tablefield并排包含两个相同字符的所有记录。

它可以返回的示例(基于我的一个本地MySQL表):
霍比特人
阿巴
艾萨克
拼字游戏

如果角色不必在一起,您可以使用其他查询:

SELECT some_fields FROM some_table WHERE field REGEXP
'a.*a|b.*b|c.*c|d.*d|e.*e|f.*f|g.*g|h.*h|i.*i|j.*j|k.*k|l.*l|m.*m|n.*n|o.*o|p.*p|q.*q|r.*r|s.*s|t.*t|u.*u|v.*v|w.*w|x.*x|y.*y|z.*z';

它可以返回的示例(基于我的一个本地MySQL表):
可能(双B)
好奇(双U)
相反(双R)
阿巴(双A和双B)

文档:MySQL pattern matching

答案 1 :(得分:0)

Mysql没有反向引用,所以你可能不得不使用它:

REGEXP  'a{2}|b{2}|c{2}|d{2}|e{2}|f{2}|g{2}|h{2}|i{2}|j{2}|k{2}|l{2}|m{2}|n{2}|o{2}|p{2}|q{2}|r{2}|s{2}|t{2}|u{2}|v{2}|w{2}|x{2}|y{2}|z{2}'