我有字符串“KK12340000”,我想验证它只有KK后第4位数字按升序排列,所以我使用类似:REGEXP_LIKE ASC号
select case when REGEXP_LIKE('KK12340000', '^KK(?=\d{4})(?:(.)\\1*|0?1?2?3?4?5?6?7?8?9?)\d{4}$') then 1 else 0 end as valid from dual;
但它返回0。因此,它是甚至可能在oracle中以升序来验证数字?
我有字符串“KK12340000”,我想验证它只有KK后第4位数字按升序排列,所以我使用类似:REGEXP_LIKE ASC号
select case when REGEXP_LIKE('KK12340000', '^KK(?=\d{4})(?:(.)\\1*|0?1?2?3?4?5?6?7?8?9?)\d{4}$') then 1 else 0 end as valid from dual;
但它返回0。因此,它是甚至可能在oracle中以升序来验证数字?
你也可以尝试这样的事情
SELECT 'KK12340000' LIKE 'KK%' AND
SUBSTRING('KK12340000', 3, 1) - SUBSTRING('KK12340000', 4, 1) < 0 AND
SUBSTRING('KK12340000', 4, 1) - SUBSTRING('KK12340000', 5, 1) < 0 AND
SUBSTRING('KK12340000', 5, 1) - SUBSTRING('KK12340000', 6, 1) < 0
IMO,这不是正则表达式是擅长的,即使你可以用正则表达式解决它的任务。你可以创建一个函数来检查给定的字符串是否被排序。在函数中,你循环输入,你得到了'O(n)'。现在你的问题是'4位数','400字符'怎么样?你会把所有的ascii字符都放到你的正则表达式中吗? – Kent