2012-01-06 31 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