我在一列(col)中的数据如下: 山口
Accounts::Changes
Applications::Zen::Other
Server::Access
我需要将这些数据转到两列。我想要在分隔符(:)之前的第一个字符串进入一个列(col1)和最后一个分隔符之后的最后一个字符串进入另一个列(col2)。
The output should be:
Col1 Col2
Accounts Changes
Applications Zen
Server Access
我正在使用sql server 2008 R2
答案 0 :(得分:2)
您应该可以使用基本字符串操作来执行此操作:
select left(col, charindex('::', col) - 1) as col1,
right(col, charindex('::', reverse(col)) - 1) as col2
from table t;
Here是一个SQL小提琴。
答案 1 :(得分:0)
我能够达到以下目的:
select A.Col1,
case when CHARINDEX('::',A.Colx)>0
then SUBSTRING(A.Colx,1,CHARINDEX('::',A.Colx)-1)
else A.Colx end Col2,
CASE WHEN CHARINDEX('::',A.Colx)>0
THEN SUBSTRING(A.Colx,CHARINDEX('::',A.Colx)+2,len(A.Colx))
ELSE NULL END as Colx3
FROM (
select
case when CHARINDEX('::',Col)>0
then SUBSTRING(Col,1,CHARINDEX('::',Col)-1)
else Col end Col1,
CASE WHEN CHARINDEX('::',Col)>0
THEN SUBSTRING(Col,CHARINDEX('::',Col)+2,len(Col))
ELSE NULL END as Colx
FROM Table1 ) as A
虽然我最终得到了剩余字符串的第三列,但我不会使用它。