1

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にエクスポートするときに問題になります。これは、2つの別々の列を作成するためです。

firstName lastNameどういうわけか、文字列をコンマなしで、firstNameを最初に配置する方法を理解する必要があります。

4

2 に答える 2

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

これにより、「John、Doe」が「DoeJohn」に切り替わります。ここで、「John、Doe」を「

   COALESCE(ca.AttributeList.value('(/AttributeList/IRName)[1]','varchar(max)'),ca2.AttributeList.value('(/AttributeList/IRName)[1]','varchar(max)')) AS IR_Name
于 2012-12-20T18:30:05.363 に答える
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は、最大4つの部分がピリオドで区切られているマルチパートの命名規則用に設計されているため、奇妙に見えます。

于 2012-12-20T19:33:54.160 に答える