我有一個字段是模擬布爾值的位類型,但我試圖使用STUFF FOR XML PATH
連接字段到一個字符串字段,它不斷給我一個錯誤。這裏的查詢:XML路徑的東西不能連接BIT類型
select
ui.IndivId,
ui.correctedInFNV,
ni.firstName,
ni.prefName,
ni.lastName,
ni.suffix,
ni.alreadyCorrect as nameCorrect,
ni.updated as nameUpdated,
ni.updatedDate,
ni.correctPerson,
ai.addr1,
ai.addr2,
ai.addr3,
ai.city,
ai.state,
ai.zip,
ai.country,
ai.alreadycorrect as adcorrect,
ai.updatedDate,
ai.updated as adupdated,
pi.priPhoneType,
pi.priPhoneNumber,
pi.updated as phoneupdated,
pi.updateddate,
ei.priEmailType,
ei.priEmailAddress,
ei.alreadycorrect as emailcorrect,
ei.updated as emailupdated,
STUFF((SELECT ','+pos.positionTitle from positionInfo as pos where pos.IndivId=ui.IndivId FOR XML PATH('')),1,1,'') AS POS_TITLE,
STUFF((SELECT ','+pos.positionId from positionInfo as pos where pos.IndivId=ui.IndivId for XML PATH('')),1,1,'') as POS_ID,
STUFF((SELECT ','+pos.positionCode from positionInfo as pos where pos.IndivId=ui.IndivId for XML PATH('')),1,1,'') as POS_CODE,
STUFF((SELECT ','+pos.areaServed from positionInfo as pos where pos.IndivId=ui.IndivId for XML PATH('')),1,1,'') as POS_AREA,
STUFF((SELECT ','+pos.districtServed from positionInfo as pos where pos.IndivId=ui.IndivId for XML PATH('')),1,1,'') as POS_DIST,
STUFF((SELECT ','+pos.reason from positionInfo as pos where pos.IndivId=ui.IndivId for XML PATH('')),1,1,'') as POS_REASON,
STUFF((SELECT ','+pos.currentlyHeld from positionInfo as pos where pos.IndivId=ui.IndivId FOR XML PATH('')),1,1,'') AS POS_HELD
from
updatedInfo as ui
join nameInfo as ni on ui.IndivId=ni.nameInfoId
join addressInfo as ai on ui.IndivId=ai.addressInfoId
join phoneInfo as pi on ui.IndivId=pi.phoneInfoId
join emailInfo as ei on ui.IndivId=ei.emailInfoId
JOIN positionInfo AS pos ON ui.IndivId=pos.IndivId
當這樣跑,我得到的錯誤
消息402,級別16,狀態1,36線的數據類型爲varchar和位是 在增加操作符不兼容。
這是最後STUFF
聲明pos.currentlyHeld
尖叫。 所以我嘗試轉換或鑄造領域爲char類型是這樣的:
STUFF((SELECT ','+CAST(pos.currentlyHeld AS VARCHAR(1)) FROM positionInfo as pos where pos.IndivId=ui.IndivId FOR XML PATH('')),1,1,'') AS POS_HELD
然後尖叫着我,因爲一個逗號的地方嗎?不確定。
Msg 245,Level 16,State 1,Line 1將 varchar值','轉換爲數據類型int時,轉換失敗。
如果是語法問題?或者這是更多的數據類型問題?
沒有試圖解開一切 - 如果你的SQL Server 2012或更高版本,可以考慮使用'CONCAT( '',列)'。它將始終轉換爲字符串,而不會被默認轉換混亂。 –
而不是東西? –
不是'','+ column'('','+ 1')是無效的,因爲SQL Server最好將字符串轉換爲整數,而不是其他方式,比如合理的系統。 –