On 11-2-2019 22:18, Lester Caine les...@lsces.co.uk [firebird-support] 
wrote:
> I have some data in a table which I need to 'pull apart'. It's
> essentially a ID for a reference but it's not as tidy as I would like
> because of the variable length and a little variable in case although
> the format is consistent.
> 
> V<num> p<num> <Name>.pdf
> For example 'V12 p234 The state of the nation.pdf'
> 
> Ideally I need to extract the 'V' element and the 'p' element into their
> own fields so I can look up Volume '12' and page '234' or list all the
> pdf's for Volume '12' in page order.
> 
> I can run it through PHP and RegEx the text and push the new fields
> back, but is it possible to do this in a query in Firebird. I THINK what
> I'm seeing is that I could search for matching patterns but not actually
> extract the match to a new field?
> 

You may want to look at the discussion "substring similar - "Invalid 
SIMILAR TO pattern"" on the 5th of December 2018.

In your case, you will need 3 separate substrings:

select x,
   substring(x similar 'V#"[[:DIGIT:]]+#"%.pdf' escape '#') as VERSION,
   substring(x similar 'V[[:DIGIT:]]+ p#"[[:DIGIT:]]+#" %.pdf' escape 
'#') as PAGE,
   substring(x similar 'V[[:DIGIT:]]+ p[[:DIGIT:]]+ #"%#".pdf' escape 
'#') as TITLE
from (
  select 'V12 p234 The state of the nation.pdf' as x
  from rdb$database
) a

You need to provide a full match, and the part you want to extract 
should be enclosed in double quotes, but those double quotes most be 
escaped (I used # here).

Mark
-- 
Mark Rotteveel
  • [firebi... Lester Caine les...@lsces.co.uk [firebird-support]
    • Re... Dimitry Sibiryakov s...@ibphoenix.com [firebird-support]
      • ... Lester Caine les...@lsces.co.uk [firebird-support]
    • [f... blackfalconsoftw...@outlook.com [firebird-support]
      • ... Lester Caine les...@lsces.co.uk [firebird-support]
      • ... Mark Rotteveel m...@lawinegevaar.nl [firebird-support]
    • Re... Mark Rotteveel m...@lawinegevaar.nl [firebird-support]
      • ... Mark Rotteveel m...@lawinegevaar.nl [firebird-support]
      • ... Lester Caine les...@lsces.co.uk [firebird-support]
        • ... Karol Bieniaszewski liviusliv...@poczta.onet.pl [firebird-support]
          • ... Lester Caine les...@lsces.co.uk [firebird-support]
            • ... Mark Rotteveel m...@lawinegevaar.nl [firebird-support]
        • ... Mark Rotteveel m...@lawinegevaar.nl [firebird-support]

Reply via email to