Oracle SQL中如何查找字符串中的连续字母字符?
在Oracle SQL中匹配含连续5个及以上字母的字符串
正确解决方案
要筛选出字符串中存在至少5个连续英文字母的记录,使用以下SQL语句:
SELECT * FROM test_dummy WHERE REGEXP_LIKE(var_col, '[A-Za-z]{5,}');
针对你遇到的问题的说明
你提到第一个正则
[A-Za-z]{5,}返回所有长度超5的字符串,这应该是误解或测试数据的偏差。以你的示例数据为例:Test(4个字母)、Test1(4个字母+1数字):不会被匹配Tesssst(7个连续字母)、TTTTest(6个连续字母)、ABCDTest(8个连续字母):会被正确匹配
如果确实出现不符合预期的匹配,请检查是否误将正则写成了.{5,}(该正则匹配任意5个及以上字符,而非仅字母)。
你使用的第二个正则
(.+1)\1{3,}?逻辑错误,它的作用是匹配重复的子串(比如连续重复的字符),因此只会返回TTTTest、Tesssst这类含重复连续字符的记录,无法覆盖ABCDTest这类无重复但连续的字母串。
扩展:匹配全字母且长度≥5的记录
如果你的需求是筛选整个字符串都是字母且长度≥5(而非仅包含连续5个字母),可以使用锚定正则:
SELECT * FROM test_dummy WHERE REGEXP_LIKE(var_col, '^[A-Za-z]{5,}$');
内容的提问来源于stack exchange,提问作者Piyush
相关产品推荐
相关产品推荐

