2012-02-07 45 views
1

我只想問如何使用SQL Server 2008中,我發現這個代碼 Split NameSQL Server的分裂名

下面的代碼

SELECT SUBSTRING(Leadname, 1, NULLIF(CHARINDEX(' ', Leadname) - 1, -1)) AS [FirstName], 
SUBSTRING(Leadname, CHARINDEX(' ', Leadname) + 1, LEN(Leadname)) AS [LastName] 
FROM Customer 

分裂的名字可以說,該數據是「李四」,並使用了該查詢,輸出是這樣的:

First Name Last Name 
    John   Doe 

但在我的客戶表,我只有一個Leadname像約翰字。使用該查詢,我得到這樣的結果:

First Name Last Name 
    NULL   John 

所有我想,如果我只在我的Leadname一個字,結果是

我應該怎麼做才能讓呢?

感謝

回答

1

這工作:

SELECT 
SUBSTRING(Name, 1, case when CHARINDEX(' ', Name) = 0 then LEN(Name) else CHARINDEX(' ', Name) end) AS [FirstName], 
case when CHARINDEX(' ', Name) = 0 then null else SUBSTRING(Name, CHARINDEX(' ', Name) + 1, LEN(Name)) end 
AS [LastName] 
FROM (
    select 'jon doe' Name 
    union 
    select 'jon' 
) X 

結果:

 
FirstName LastName 
--------- -------- 
jon  doe 
jon  NULL 

(2 row(s) affected) 

你能做到這一點有點清潔儘管有user defined function

+0

略少效率感謝您的幫助。它在我的桌子上工作。再一次,非常感謝你 – 2012-02-07 09:37:54