Sql 类REGEXP_的ASC数
我有一个字符串“KK12340000”,我只想在KK后的前4位按升序排列时验证它,所以我使用类似于:Sql 类REGEXP_的ASC数,sql,regex,plsql,oracle-sqldeveloper,Sql,Regex,Plsql,Oracle Sqldeveloper,我有一个字符串“KK12340000”,我只想在KK后的前4位按升序排列时验证它,所以我使用类似于: 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 CASE WH
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 CASE
WHEN REGEXP_LIKE (
'KK12230000',
'^KK(?:(.)\\1*|0?1?2?3?4?5?6?7?8?9?)\d{4}$')
THEN
1
ELSE
0
END
AS valid
FROM DUAL;
你也可以试试这样的东西
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
选择像“KK%”这样的“KK12340000”,然后
子字符串('KK12340000',3,1)-子字符串('KK12340000',4,1)<0和
子字符串('KK12340000',4,1)-子字符串('KK12340000',5,1)<0和
子字符串('KK12340000',5,1)-子字符串('KK12340000',6,1)<0
它有效,但也验证了1223是有效数字:/谢谢,是的,我有点抱歉,你的答案100%有效now@mAtsea. 很高兴听到这个。依我看,这不是regex擅长的任务,即使你可以用regex解决它。您可以创建一个函数来检查给定字符串是否已排序。在函数中,通过循环输入,得到O(n)
。现在你的问题是4位
那么400个字符
怎么样?你要把所有ascii字符都放在正则表达式中吗?