运行sql server 2008标题说明了,但在我的select语句中我有这个
COALESCE( ca.AttributeList.value('(/AttributeList/IRName)[1]','varchar(max)')
,ca2.AttributeList.value('(/AttributeList/IRName)[1]','varchar(max)'))
AS IR_Name
然后返回lastName, FirstName
导出到csv时会出现问题,因为它会创建两个单独的列,而不是。
我不得不弄清楚如何让字符串为firstName lastName
,没有逗号,并将firstName放在第一位。
答案 0 :(得分:3)
SELECT PARSENAME(REPLACE('John , Doe', ',', '.'), 1) + ' ' + PARSENAME(REPLACE('John , Doe', ',', '.'), 2)
这会将'John,Doe'转换为'Doe John'。现在,您只需要用
替换'John,Doe' COALESCE(ca.AttributeList.value('(/AttributeList/IRName)[1]','varchar(max)'),ca2.AttributeList.value('(/AttributeList/IRName)[1]','varchar(max)')) AS IR_Name
答案 1 :(得分:0)
另一种方法是使用字符串函数:
select (case when IR_Name like '%,%'
then (ltrim(rtrim(substring(IR_NAME, charindex(',', IR_NAME)+1, 1000))) + ' ' +
ltrim(rtrim(left(IR_Name, charindex(',', IR_NAME) - 1)))
)
else IR_NAME
end) t
from (select COALESCE( ca.AttributeList.value('(/AttributeList/IRName)[1]','varchar(max)')
,ca2.AttributeList.value('(/AttributeList/IRName)[1]','varchar(max)'))
AS IR_Name
. . .
) t
修剪功能是删除多余的空格。
parsename
解决方案很聪明。但是,它看起来很奇怪,因为parsename是为多部分命名约定而设计的,最多有四个部分用句点分隔。