我有字符串「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