2013-11-15 110 views
1

我有这样有数据的列,SQL分割字符串,并加入回以相反的顺序

表1

全名

Lastname1, Firstname1 

Lastname2, Firstname2 

Lastname3, Firstname3 

我想要的结果是,

Firstname1 Lastname1 

Firstname2 Lastname2 

Firstname3 Lastname3 

当我使用这个查询

SELECT (substring(Name,charindex(',',Name)+1 ,250)+ SUBSTRING(Name,0, CHARINDEX(',',Name))) from @table1 

我得到的结果是

FIRSTNAME1 ...

FIRSTNAME2 ...

FIRSTNAME3 ...

请帮助

+0

你只是想在你的表中的所有领域正是如此串联?还是有一些领域,你会用来确定哪些行属于一起? –

+0

你的结果出了什么问题? – Hogan

+1

除了增加一个额外的空间,这基本上似乎工作? http://sqlfiddle.com/#!3/d41d8/25191 – Laurence

回答

1

工作示例:http://sqlfiddle.com/#!3/0fc0f/16/0

Select 
right(name,len(name)-charindex(', ',name)) + ' ' + 
left(name,charindex(', ',name)-1) 
from @table1; 
+0

此查询给我结果以这种方式...... Lasttname1 Lastnmame2 有用于名字空间...但名字没有出现...... – Ashmith

+0

您好,感谢回答......这工作得很好......我只是想知道......为什么第一次不工作......谢谢! – Ashmith

0

提供的名称不包含a。您可以使用

parsename (replace (name, ',','.'),1) + ' ' + parsename (replace (name, ',','.'),2) 
+0

感谢您的回复...但结果仍然相同...它的名字和姓氏被替换为句号... – Ashmith

+0

奇怪似乎为我工作[链接](http://www.sqlfiddle.com/ #!3/0c40c/3/0)无论如何,你已经有了一些工作解决方案。 – conan

0

试试这个:

SELECT RIGHT(name,len(name)-CHARINDEX(',',name,0))+' '+LEFT(name,CHARINDEX(',',name,0)-1),name,CHARINDEX(',',name,0) 
from @table1 
+0

我执行查询时得到的错误是 必须声明标量变量“@T”。 – Ashmith

+0

我编辑过它,现在是真的。 –