早教吧 育儿知识 作业答案 考试题库 百科 知识分享

用oracle正则表达式1.号码尾数后4位含3个以上(含3个)相同号码----如AAAA、BAAA、AAAA,注A不等于B2.号码尾数后4位按顺序连续递增或递减----如ABCD、DCBA,注A、B、C、D均不相等3.号码尾数后4位排序

题目详情
用oracle正则表达式
1.号码尾数后4位含3个以上(含3个)相同号码----如AAAA、BAAA、AAAA,注A不等于B
2.号码尾数后4位按顺序连续递增或递减----如ABCD、DCBA,注A、B、C、D均不相等
3.号码尾数后4位排序有规律且规律重复----如ABAB、AABB、BAAB,注A不等于B
4.号码尾数后8位,其中有6位以上数字排序有规律且规律重复次数超过2次以上(含2次)的号码----AAABBB**、**AABAAB、**ABBABB、**ABCABC、*AABAAB*、*ABBABB*、*ABCABC*、AABAAB**、ABBABB**、ABCABC**,注A、B、C不相等
▼优质解答
答案和解析

递增的用正则表达式处理很麻烦. 我就只列几个简单的吧.


CREATE TABLE test_phone (
phone_number  varchar(20)
);

INSERT INTO test_phone
SELECT '13812345678' FROM  dual  UNION ALL
SELECT '13812345566' FROM  dual  UNION ALL
SELECT '13812345656' FROM  dual  UNION ALL
SELECT '13812345556' FROM  dual  UNION ALL
SELECT '13812346666' FROM  dual  UNION ALL
SELECT '13855661234' FROM  dual  UNION ALL
SELECT '13856561234' FROM  dual  UNION ALL
SELECT '13855561234' FROM  dual  UNION ALL
SELECT '13866661234' FROM  dual;


--  AAAA 结尾的
SELECT
  *
FROM
  test_phone
WHERE
  REGEXP_LIKE(REVERSE(phone_number), '^(\d)\1\1\1');

PHONE_NUMBER
----------------------------------------
13812346666



--  AABB 结尾的
SELECT
  *
FROM
  test_phone
WHERE
  REGEXP_LIKE(REVERSE(phone_number), '^(\d)\1([^\1])\2')
  AND NOT REGEXP_LIKE(REVERSE(phone_number), '^(\d)\1\1\1');

PHONE_NUMBER
----------------------------------------
13812345656



--  ABAB 结尾的
SELECT
  *
FROM
  test_phone
WHERE
  REGEXP_LIKE(REVERSE(phone_number), '^(\d)(\d)\1\2')
  AND NOT REGEXP_LIKE(REVERSE(phone_number), '^(\d)\1\1\1');

PHONE_NUMBER
----------------------------------------
13812345656
看了 用oracle正则表达式1....的网友还看了以下: