2016-12-07 1 views
1

J'ai une table avec des données quelque chose comme çaVersion plusieurs mots clés arrière et avant de la chaîne MYSQL

--------------- 
|town   | 
--------------- 
|Longton North | 
|Longton South | 
|Longton North | 
|Longton East | 
|Longton West | 
|East Valley | 
|West Valley | 
--------------- 

Je sais comment couper arrière et avant les caractères de chaîne à l'aide

TRIM(BOTH 'North' FROM town) 

Mais je Je veux couper le Nord, le Sud, l'Ouest et l'Est de mon résultat. Ainsi, la sortie devrait être comme

--------- 
|town  | 
--------- 
|Longton | 
|Longton | 
|Longton | 
|Longton | 
|Longton | 
|Valley | 
|Valley | 
--------- 
+3

Astuce: 'TRIM (TRIM (TRIM (TRIM (...)))) '. –

+0

@GordonLinoff fonctionne comme un charme. Merci beaucoup pour votre aide. –

+0

Ouais, c'est comme une tondeuse à cheveux :) – Rahul

Répondre

1

Essayez ce .. cela fonctionnera pour vous aucune façon ..

select 
trim(TRIM(BOTH 'South' FROM TRIM(BOTH 'North' FROM TRIM(BOTH 'East' FROM TRIM(BOTH 'West' FROM town))))) from tbl 

spécifiée ou plus

select trim(case 
when position('North' in town) > 0 then TRIM(BOTH 'North' FROM town) 
when position('South' in town) > 0 then TRIM(BOTH 'South' FROM town) 
when position('East' in town) > 0 then TRIM(BOTH 'East' FROM town) 
when position('West' in town) > 0 then TRIM(BOTH 'West' FROM town) end) 
from tbl 
+0

Le contrôle 'position' est juste un surcoût supplémentaire –

+0

On peut aussi écrire cette' select trim (TRIM (BOTH 'South' FROM TRIM (BOTH 'North' FROM TRIM (BOTH 'East' à partir de TRIM (BOTH 'West' de la ville))))) de tb' –

+0

Ce serait une meilleure réponse –