2010-10-02 4 views
0

J'ai une colonne dans la table SQL qui aurait des données comme celle-ci:Split côlons dans SQL Server

"College: Queenstown College" ou "Université: Université du Queensland"

Texte avant le ":" peut être différent. Alors, comment puis-je sélectionner uniquement le texte avant le ":" de la colonne et le texte après le ": (espace)"?

+1

Qu'est-ce que la base de données et version? –

+0

MS SQL 2005 .... –

Répondre

4

Vous devriez probablement envisager de mettre votre table en first normal form plutôt que de stocker 2 morceaux de données dans la même colonne ...

;with yourtable as 
(
select 'College: Queenstown College' as col UNION ALL 
select 'University: University of Queensland' 
) 
select 
    left(col,charindex(': ',col)-1) AS InstitutionType, 
    substring(col, charindex(': ',col)+2, len(col)) AS InstitutionName 
from yourtable 
+0

Merci beaucoup. Cela fonctionne ... –

+0

Il est possible d'obtenir le texte après le ": "? –

+0

@Wee - Oui. Voir éditer. –

1

Utilisation des fonctions charindex et substring:

substring(theField, 1, charindex(':', theField) - 1)