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 по дате отправления:

Предыдущее
От: Oisin Glynn
Дата:
Сообщение: Help with performance and explain.
Следующее
От: "Aaron Bono"
Дата:
Сообщение: Fwd: Atomar SQL Statement