Re: SELECT substring with regex
От | T E Schmitz |
---|---|
Тема | Re: SELECT substring with regex |
Дата | |
Msg-id | 44AEB4C6.9000903@numerixtechnology.de обсуждение исходный текст |
Ответ на | Re: SELECT substring with regex ("Rodrigo De Leon" <rdeleonp@gmail.com>) |
Ответы |
Re: SELECT substring with regex
Re: SELECT substring with regex |
Список | pgsql-sql |
Rodrigo De Leon wrote: > On 7/7/06, T E Schmitz <mailreg@numerixtechnology.de> wrote: > >> But that takes me to the next problem: >> >> For the sake of the example I simplified the regular pattern. >> In reality, BASE_NAME might be: >> >> 28mm >> 28-70mm >> >> So the reg. expr. requires brackets: >> >> substring (NAME, '^(\\d+(-\\d+)?mm)' ) as BASE_NAME >> >> Actually, the pattern is more complex than that and I cannot see how I >> can express it without brackets. > > > Maybe: > > select > substring ('28-70mm LD AD Asp XR Macro', '^[\\d-]*mm' ) as BASE_NAME Sorry, but that would also capture something like 10-30-59mm The pattern describes either a single length (120 millimeters) or a range (30 to 70 millimetres), hence: \\d+(-\\d+)?mm The ? quantifier refers to the combination of '-' and digits and has to be bracketed. If the brackets cannot be avoided in the expression, your original suggestion might come in handy though: SELECT substring (NAME, '^\\d+(-\\d+)?mm') AS BASE_NAME , substr( NAME , char_length( substring (NAME, '^\\d+(-\\d+)?mm') ) + 2 ) AS SUFFIX Still, I'd be interested to know whether there is a 'more elegant' solution. -- Regards, Tarlika Elisabeth Schmitz
В списке pgsql-sql по дате отправления: