2012-01-06 48 views
2

我有一個包含類似值的列:分裂數字和字母2005臺

034004   
034010   
06012AB   
06012C   
06012D   
06012P    
06026C   
06026P 

有沒有辦法單獨或在兩個單獨的列,數字和字母拆分這些?難道不是所有的數字都包含字母嗎?

我使用SQL Server Management Studio 2005中

乾杯提前爲任何能指出我在正確的直接

+0

字母是否可以混合(即12BA34CD)還是始終是數字,後面是字母(如果有)? SQL的字符串函數並不是很好,但你所要求的可能可以用它們來完成。 – Sparky 2012-01-06 11:01:58

+0

它總是一個數字後面跟一個數字(如果有的話)的設置格式 – user1086159 2012-01-06 11:06:56

回答

5

假設它始終是數字一組,然後(可能)一組字母

SELECT SUBSTRING(YourCol, 0, P), 
     SUBSTRING(YourCol, P, 8000) 
FROM YourTable 
     CROSS APPLY(SELECT PATINDEX('%[^0-9]%', YourCol + 'A')) Split(P) 
+0

非常感謝將數字和字母分成2列。非常感謝 – user1086159 2012-01-06 11:13:02

+0

感謝您的回答,它爲我工作。但是我不明白你對Split(P)做了什麼。你能解釋一下嗎? – ristonj 2013-07-06 00:19:21

+0

@ristonj只是將表達式PATINDEX('%[^ 0-9]%',YourCol +'A')'的結果放入一個別名爲'P'的列中,然後我可以在'SELECT'子句中引用而不需要重複更長的表達。 – 2013-07-06 17:33:59