Re: REGEXP_SUBSTR() is always NULL
Date: Fri, 26 Jun 2009 09:23:17 +0200
Maxim Demenko escribió:
> ddf schrieb:
>> On Jun 25, 6:52 am, "Álvaro G. Vicario" >> <alvaro.NOSPAMTH..._at_demogracia.com> wrote: >>> ddf escribió: >>> >>>> On Jun 25, 6:29 am, "Álvaro G. Vicario" >>>> <alvaro.NOSPAMTH..._at_demogracia.com> wrote: >>>>> In an Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 >>>>> server, >>>>> REGEXP_SUBSTR() always returns NULL. E.g.: >>>>> SELECT REGEXP_SUBSTR('1234,5678', '\d+', 1, 1) >>>>> FROM DUAL >>>>> In my local 10g XE, however, it returns 1234 as expected. >>>>> Is it me or is it the server? >>>> It may be the server if you are, indeed, comparing XE (10.2.0.1) to a >>>> 10.1.0.2 release. You're certain you've posted the version for the >>>> Enterprise Edition correctly? >>> Absolutely: SELECT BANNER FROM v$version + clipboard. >>> >>> If it was a legacy edition that did not support REGEXP_SUBSTR() I'd >>> expect an error message. >>> >>> Is it possible to cancel, disabled or override REGEXP_SUBSTR? >>> >>> -- >>> --http://alvaro.es- Álvaro G. Vicario - Burgos, Spain >>> -- Mi sitio sobre programación web:http://borrame.com >>> -- Mi web de humor satinado:http://www.demogracia.com >>> -- >> >> Things have changed between 10.1 and 10.2: >> >> 10;1 regular expression support -- >> http://download.oracle.com/docs/cd/B14117_01/server.101/b10759/ap_posix001.htm#i690819 >> >> >> 10.2 regular expression support -- >> http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/ap_posix001.htm#i690819 >> >> >> These differences may result in the differences you're seeing. >> >> >> David Fitzjarrell
> As David already suggested, perl influenced extensions came in 10.2, the
> list is at
> On 10.1 one should use instead the posix syntax
> REGEXP_SUBSTR('1234,5678', '[[:digit:]]+', 1, 1) or
> REGEXP_SUBSTR('1234,5678', '[0-9]+', 1, 1) or
Oh my... That was difficult to spot! I stared at both documents trying to figure out what had changed, with no luck xD
Of course, that was it: \d was looking for a literal '\d'.
Something I miss in Oracle reference is that it doesn't explain when a function became available or suffered changes; at least, not in the function definition. Oh well, thank you everybody. [0-9] is doing the job just as fine as \d.
-- -- http://alvaro.es - Álvaro G. Vicario - Burgos, Spain -- Mi sitio sobre programación web: http://borrame.com -- Mi web de humor satinado: http://www.demogracia.com --Received on Fri Jun 26 2009 - 02:23:17 CDT