2014-09-12 5 views
1

Eh bien, je l'ai étudié, mais rien ne semble fonctionner D:Substring avec SQL Server 2008

Je cette

Create Table Client 
    (
     Name varchar(15), 
     Last_Name varchar(30) 
    ) 

    insert into Client values ('Ralph', 'Van Beethoven') 

    Create Table Client_Det 
    (
     First_Last_Name varchar(15), 
     Second Last Name varchar(15) 
    ) 

Ce que je besoin est de separte le Nom 'Van Beethoven' du client et insérez-le dans Client_Det quelque chose comme ceci:

First Last Name: Van 

Second Last Name: Beethoven 

Que puis-je faire?

+1

Qu'en est-noms comme "van der Waal"? Bien qu'il puisse y avoir des espaces dans les noms de famille, ils ne sont pas des parties séparées. –

Répondre

1

Vous pouvez le faire comme ceci:

insert into Client_Det 
select 
    case charindex(' ', Last_Name) when 0 then Last_Name else left(Last_Name,charindex(' ', Last_Name)-1) end as First_Last_Name 
, case charindex(' ', Last_Name) when 0 then null else right(Last_Name,len(Last_Name)-charindex(' ', Last_Name)) end as Second_Last_Name 
from client 

L'idée est d'utiliser charindex(' ', Last_Name) pour détecter des espaces dans la colonne Last_Name. S'il n'y a pas d'espace, utilisez la colonne entière pour First_Last_Name et placez un NULL dans Second_Last_Name. Sinon, divisez l'espace et placez les deux parties dans des colonnes séparées.

Demo.

+0

Mec, vous êtes génial! Merci: D – RalphVB