Basically i am trying to return any fields within the tag column that contain up_ up1_ up2_ up3, up4_.
the problem i’m facing is i only want to show these tags and not the others.
The field contains a mixture of characters on each row so i’m finding it difficult to use a CASE statement substr.
I’ve been able to return the entire field using this sql:
select tags from products where tags like '%up_%' or tags like '%Up*_%'
any ideas?
Many thanks, Jonathon
EDIT data within the column:
almost gone, Autumn/Winter, BEIGE Coats Jackets Cream, Gender_Female ISAWITFIRST.com Neutrals Pcat-Coats & Jackets S Sale SALE:New In Coats & Jackets Sale:SALE:New In Clothing Scat-Coat Up1_Cup-Detail-Sheer-Panel-Bodysuit-Cream-Jl33334 Up_High-Waisted-Skinny-Trousers-White-Jl34117
I want to be able to return only the UP1_ and Up_ tags. and want to remove the rest..
EDIT 2
This column is populated by an external site
Advertisement
Answer
For PostgreSQL for instance, you could go with the following:
select substring(tags from '[Uu]p[0-9]?_') from products where tags like '%up_%' or tags like '%Up*_%'
Please adjust the regular expression in the first line to your exact needs.
For other DB-Systems, swap the substring function for one of the following:
For TSQL, have a look at the “patindex”-function. For Athena, consider the REGEXP_SUBSTR function, as described here: https://docs.aws.amazon.com/redshift/latest/dg/REGEXP_SUBSTR.html