数据"lastName, FirstName"。我需要把它写成"FirstName LastName"



运行SQL Server 2008标题是这样说的,但是在我的选择语句中,我有此

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,没有逗号,然后将一个名称放在首位。

    SELECT PARSENAME(REPLACE('John , Doe', ',', '.'), 1) + ' ' + PARSENAME(REPLACE('John , Doe', ',', '.'), 2)

这将把"约翰,杜伊"转换为" doe john"。现在,您只需要用

替换'John,Doe。
   COALESCE(ca.AttributeList.value('(/AttributeList/IRName)[1]','varchar(max)'),ca2.AttributeList.value('(/AttributeList/IRName)[1]','varchar(max)')) AS IR_Name

另一种方法是使用字符串函数:

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是为多部分命名惯例而设计的,最多四个部分按周期分开。

相关内容

最新更新