2016-11-20 38 views
0

我有一個SQL Server 2014數據庫提取字符只有在SQL Server

  • XXXX下面的示例數據,YYYY:679459
  • XXXX,YYYY:679459
  • XXXX,YYYY:679459
  • xxxx,yyyy:679459

正如您所看到的,沒有統一的數據寫入方式和寫入任何上述格式。

我想只提取姓氏與名字即XXXX,YYYY

從一些互聯網搜索,我發現以下,並試圖它

left(EMP_CLass_9_descr, isnull(nullif(charindex(' :', EMP_CLass_9_descr),0) - 1,8000)) As TM_NAME

這隻工作,在那裏有前一個空間:

我也試過

left(EMP_CLass_9_descr, isnull(nullif(charindex(':', EMP_CLass_9_descr),0) - 1,8000)) As TM_NAME 

並隨後包括在場景中一個空間,它寫成

  • XXXX,YYYY:679459

是有辦法,這可以寫,我只提取XXXX,YYYY?

在此先感謝您提供的任何幫助。

+0

您目前的查詢已經做到了。 –

回答

1

Rasmac, 你幾乎在那裏。試試這個:

left(EMP_CLass_9_descr, isnull(nullif(charindex(':', REPLACE(EMP_CLass_9_descr,' ','')),0) - 1,8000)) As TM_NAME 
+0

感謝一百萬約翰。這樣可行!!非常感激。 – rasmac

2

這應該工作:

select ltrim(rtrim(left(EMP_CLass_9_descr, 
         charindex(':', EMP_CLass_9_descr + ':' 
           ) 
         ) 
       )) 

這看起來爲':',也可以確保有一個附加冒號到名稱的末尾。然後修剪返回的值以擺脫前導和尾隨空格。

+0

謝謝Gordon,你的解決方案確實如你所說,但John提供的解決方案正是我所期待的。非常感謝 – rasmac

+0

@rasmac。 。 。我認爲這個版本更簡單。 –

相關問題