您是否知道Oracle 11g R2速成版(XE)上的此SQL命令爲何不返回預期結果?Oracle SQL REGEXP_LIKE未返回預期結果
SELECT 'X'
FROM dual
WHERE REGEXP_LIKE('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)', '^.*MSIE [5-8](?:\.[0-9]+)?(?!.*Trident\/(?:[5-9]|1[0-9])\.0).*$');
當我使用網站https://regex101.com/,模式匹配...
您應該使用'regexp_substr'來獲得實際匹配。使用'regexp_like'會告訴你模式是否匹配。在這種情況下,如果爲true,則會得到'x',否則不會有行。 –
Oracle正則表達式引擎不支持lookahead。如果你想獲取子字符串,我會建議使用'regexp_substr',然後用'regexp_replace'替換不必要的部分。如果你只需要用'regexp_like'來匹配行,你可能根本不需要它們。 –
感謝您的回答,但此命令不會返回任何結果。所以,對我而言,Oracle在正則表達式中沒有意識到(第二個參數)。但是什麼?選擇REGEXP_SUBSTR('Mozilla/4.0(compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)','^。* MSIE [ 5-8](:\ [0-9] +?)?(*三叉戟\ /(?!?。[5-9] | 1 [0-9])\ 0)。* $「) 「REGEXP_SUBSTR」來自雙重; – Vince