Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 类REGEXP_的ASC数_Sql_Regex_Plsql_Oracle Sqldeveloper - Fatal编程技术网

Sql 类REGEXP_的ASC数

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

我有一个字符串“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
          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字符都放在正则表达式中吗?