2016-07-31 15 views
0

Ich habe eine Liste von Produkten mit ungereinigten Beschreibungen, die ich Attribute aus extrahieren muss.PostgreSQL: wenn Spalte1 enthält x, y oder z setze Spalte2 zu x, y oder z

heißt:

'groß (blau) Tank-Top'

‚med wht. W Shorts'

usw.

Bedürfnisse werden:

 
size color style  gender 
large Blue Tank top 
Medium White Shorts women's 

Die Liste der möglichen Variationen ziemlich lang ist. Gibt es einen Weg durch Postgres zu sagen:

Wenn Beschreibung enthält [blau, weiß, rot] eingestellte Farbe auf [zurück gefunden color]

Antwort

1

Es gibt mehr Möglichkeiten. Das direkteste ist zu verwenden case:

select (case when description like '%blue%' then 'blue' 
      when description like '%white%' then 'white' 
      when description like '%red%' then 'red' 
     end) as color 
+1

"Frederick Wrathwhite's bluenosed Delphin" wird alle drei übereinstimmen. – NovaDenizen

+0

Perfekter Dank. Ich werde es versuchen. –

+0

@NovaDenizen. . . Eigentlich würde es nur "blau" entsprechen, weil ein "Fall" die erste Übereinstimmung auswählt. Das ist ein wertvoller Kommentar, um das OP zu fragen: Was tun, wenn es mehrere Übereinstimmungen gibt. –

Verwandte Themen