插入基于特定的时间间隔/字符

问题描述:

我有字段名以下字符串的SQL字符串换行:插入基于特定的时间间隔/字符

'TransID, Convert(VarChar(250), [TPSYN]) AS [TPSYN], Convert(VarChar(250), [SureFitYN]) AS [SureFitYN], Convert(VarChar(250), [AccountNbr]) AS [AccountNbr], Convert(VarChar(250), [Account Name]) AS [Account Name], Convert(VarChar(250), [EffectiveDate]) AS [EffectiveDate], Convert(VarChar(250), [IM]) AS [IM], Convert(VarChar(250), [RevisionDate]) AS [RevisionDate], Convert(VarChar(250), [AccountAddress]) AS [AccountAddress], Convert(VarChar(250), [LSOCode]) AS [LSOCode], Convert(VarChar(250), [ASONonASOBoth]) AS [ASONonASOBoth], Convert(VarChar(250), [MedicalYN]) AS [MedicalYN], Convert(VarChar(250), [NonManagedCareYN]) AS [NonManagedCareYN], Convert(VarChar(250), [ManagedCareYN]) AS [ManagedCareYN], Convert(VarChar(250), [HRAYN]) AS [HRAYN], Convert(VarChar(250), [MedHRAYN]) AS [MedHRAYN], Convert(VarChar(250), [LPHRAYN]) AS [LPHRAYN], Convert(VarChar(250), [HealthyFutYN]) AS [HealthyFutYN], Convert(VarChar(250), [HAHRAYN]) AS [HAHRAYN], Convert(VarChar(250), [HSAYN]) AS [HSAYN], Convert(VarChar(25 
0), [FSAHealthCare]) AS [FSAHealthCare], Convert(VarChar(250), [FSADependentCare]) AS [FSADependentCare], Convert(VarChar(250), [DentalYN]) AS [DentalYN], Convert(VarChar(250), [TaftHartley]) AS [TaftHartley], Convert(VarChar(250), [ParameterComments]) AS [ParameterComments], Convert(VarChar(250), [MLRAvgLivesNumber]) AS [MLRAvgLivesNumber], Convert(VarChar(250), [MLRAvgLivesRptYear]) AS [MLRAvgLivesRptYear], Convert(VarChar(250), [MLRContact]) AS [MLRContact], Convert(VarChar(250), [MLRContactAddress1]) AS [MLRContactAddress1], Convert(VarChar(250), [MLRContactAddress2]) AS [MLRContactAddress2], Convert(VarChar(250), [MLRContactCity]) AS [MLRContactCity], Convert(VarChar(250), [MLRContactState]) AS [MLRContactState], Convert(VarChar(250), [MLRContactZip]) AS [MLRContactZip], Convert(VarChar(250), [HealthRiskAssessment]) AS [HealthRiskAssessment], Convert(VarChar(250), [ErisaYN]) AS [ErisaYN], Convert(VarChar(250), [ErisaPlanName]) AS [ErisaPlanName], Convert(VarChar(250), [ErisaPlanNumber]) AS [ErisaPlanNum 
ber], Convert(VarChar(250), [ErisaPlanEndsMM]) AS [ErisaPlanEndsMM], Convert(VarChar(250), [ErisaPlanEndsDD]) AS [ErisaPlanEndsDD], Convert(VarChar(250), [ErisaAdministrator]) AS [ErisaAdministrator], Convert(VarChar(250), [ErisaClaimAdministrator]) AS [ErisaClaimAdministrator], Convert(VarChar(250), [ErisaCost]) AS [ErisaCost], Convert(VarChar(250), [ErisaEOB]) AS [ErisaEOB], Convert(VarChar(250), [ErisaEOBName]) AS [ErisaEOBName], Convert(VarChar(250), [ErisaEOBAddress1]) AS [ErisaEOBAddress1], Convert(VarChar(250), [ErisaEOBAddress2]) AS [ErisaEOBAddress2], Convert(VarChar(250), [ErisaEOBCity]) AS [ErisaEOBCity], Convert(VarChar(250), [ErisaEOBState]) AS [ErisaEOBState], Convert(VarChar(250), [ErisaEOBZip]) AS [ErisaEOBZip], Convert(VarChar(250), [ErisaEOBPhone]) AS [ErisaEOBPhone], Convert(VarChar(250), [ErisaPAName]) AS [ErisaPAName], Convert(VarChar(250), [ErisaPAAddress1]) AS [ErisaPAAddress1], Convert(VarChar(250), [ErisaPAAddress2]) AS [ErisaPAAddress2], Convert(VarChar(250), [ErisaPACity]) AS [Eris 
aPACity], Convert(VarChar(250), [ErisaPAState]) AS [ErisaPAState], Convert(VarChar(250), [ErisaPAZip]) AS [ErisaPAZip], Convert(VarChar(250), [ErisaPAPhone]) AS [ErisaPAPhone], Convert(VarChar(250), [ErisaLAName]) AS [ErisaLAName], Convert(VarChar(250), [ErisaLAAddress1]) AS [ErisaLAAddress1], Convert(VarChar(250), [ErisaLAAddress2]) AS [ErisaLAAddress2], Convert(VarChar(250), [ErisaLACity]) AS [ErisaLACity], Convert(VarChar(250), [ErisaLAState]) AS [ErisaLAState], Convert(VarChar(250), [ErisaLAZip]) AS [ErisaLAZip], Convert(VarChar(250), [ErisaLAPhone]) AS [ErisaLAPhone], Convert(VarChar(250), [ERISAComments]) AS [ERISAComments], Convert(VarChar(250), [CSNApproval]) AS [CSNApproval], Convert(VarChar(250), [CSNPPO]) AS [CSNPPO], Convert(VarChar(250), [CSNOAP]) AS [CSNOAP], Convert(VarChar(250), [CSNSupplemental]) AS [CSNSupplemental], Convert(VarChar(250), [CSNReplacement]) AS [CSNReplacement], Convert(VarChar(250), [CSNType]) AS [CSNType], Convert(VarChar(250), [CSNNBNIL915]) AS [CSNNBNIL915], Convert(VarCh 
ar(250), [CSNNBNPA910]) AS [CSNNBNPA910], Convert(VarChar(250), [CSNNBNPA911]) AS [CSNNBNPA911], Convert(VarChar(250), [CSNNBNFL918]) AS [CSNNBNFL918], Convert(VarChar(250), [CSNNBNCA915]) AS [CSNNBNCA915], Convert(VarChar(250), [CSNNBNMA904]) AS [CSNNBNMA904], Convert(VarChar(250), [CSNOwnLogo]) AS [CSNOwnLogo], Convert(VarChar(250), [CSNNBNAllBranches]) AS [CSNNBNAllBranches], Convert(VarChar(250), [CSNNBNBranchComment]) AS [CSNNBNBranchComment], Convert(VarChar(250), [ASOStopLoss]) AS [ASOStopLoss], Convert(VarChar(250), [ASOCigna]) AS [ASOCigna], Convert(VarChar(250), [ASOThirdParty]) AS [ASOThirdParty], Convert(VarChar(250), [ASORetirees]) AS [ASORetirees], Convert(VarChar(250), [ISOStopLoss]) AS [ISOStopLoss], Convert(VarChar(250), [ISOCigna]) AS [ISOCigna], Convert(VarChar(250), [ISOThirdParty]) AS [ISOThirdParty], Convert(VarChar(250), [ISORetirees]) AS [ISORetirees], Convert(VarChar(250), [ASOReimbCigna]) AS [ASOReimbCigna], Convert(VarChar(250), [ASOReimbOther]) AS [ASOReimbOther]' 

我需要做的是插入换行符所以没有线长度超过950个字符,但我需要在字段名称末尾插入这些中断。所以,我需要做的是从字符950开始并向后工作,直到找到“],”的第一个实例。我需要在那里插入换行符,然后向前计算950个字符,并再次向后工作,直到我点击“],”的第一个实例。泡沫,冲洗,重复。

结果字符串应该结束了寻找这样的事情(除非我算错了):

TransID, Convert(VarChar(250), [TPSYN]) AS [TPSYN], Convert(VarChar(250), [SureFitYN]) AS [SureFitYN], Convert(VarChar(250), [AccountNbr]) AS [AccountNbr], Convert(VarChar(250), [Account Name]) AS [Account Name], Convert(VarChar(250), [EffectiveDate]) AS [EffectiveDate], Convert(VarChar(250), [IM]) AS [IM], Convert(VarChar(250), [RevisionDate]) AS [RevisionDate], Convert(VarChar(250), [AccountAddress]) AS [AccountAddress], Convert(VarChar(250), [LSOCode]) AS [LSOCode], Convert(VarChar(250), [ASONonASOBoth]) AS [ASONonASOBoth], Convert(VarChar(250), [MedicalYN]) AS [MedicalYN], Convert(VarChar(250), [NonManagedCareYN]) AS [NonManagedCareYN], Convert(VarChar(250), [ManagedCareYN]) AS [ManagedCareYN], Convert(VarChar(250), [HRAYN]) AS [HRAYN], Convert(VarChar(250), [MedHRAYN]) AS [MedHRAYN], Convert(VarChar(250), [LPHRAYN]) AS [LPHRAYN], Convert(VarChar(250), [HealthyFutYN]) AS [HealthyFutYN], Convert(VarChar(250), [HAHRAYN]) AS [HAHRAYN], 
Convert(VarChar(250), [HSAYN]) AS [HSAYN], Convert(VarChar(250), [FSAHealthCare]) AS [FSAHealthCare], Convert(VarChar(250), [FSADependentCare]) AS [FSADependentCare], Convert(VarChar(250), [DentalYN]) AS [DentalYN], Convert(VarChar(250), [TaftHartley]) AS [TaftHartley], Convert(VarChar(250), [ParameterComments]) AS [ParameterComments], Convert(VarChar(250), [MLRAvgLivesNumber]) AS [MLRAvgLivesNumber], Convert(VarChar(250), [MLRAvgLivesRptYear]) AS [MLRAvgLivesRptYear], Convert(VarChar(250), [MLRContact]) AS [MLRContact], Convert(VarChar(250), [MLRContactAddress1]) AS [MLRContactAddress1], Convert(VarChar(250), [MLRContactAddress2]) AS [MLRContactAddress2], Convert(VarChar(250), [MLRContactCity]) AS [MLRContactCity], Convert(VarChar(250), [MLRContactState]) AS [MLRContactState], Convert(VarChar(250), [MLRContactZip]) AS [MLRContactZip], Convert(VarChar(250), [HealthRiskAssessment]) AS [HealthRiskAssessment], Convert(VarChar(250), [ErisaYN]) AS [ErisaYN], 
Convert(VarChar(250), [ErisaPlanName]) AS [ErisaPlanName], Convert(VarChar(250), [ErisaPlanNumber]) AS [ErisaPlanNumber], Convert(VarChar(250), [ErisaPlanEndsMM]) AS [ErisaPlanEndsMM], Convert(VarChar(250), [ErisaPlanEndsDD]) AS [ErisaPlanEndsDD], Convert(VarChar(250), [ErisaAdministrator]) AS [ErisaAdministrator], Convert(VarChar(250), [ErisaClaimAdministrator]) AS [ErisaClaimAdministrator], Convert(VarChar(250), [ErisaCost]) AS [ErisaCost], Convert(VarChar(250), [ErisaEOB]) AS [ErisaEOB], Convert(VarChar(250), [ErisaEOBName]) AS [ErisaEOBName], Convert(VarChar(250), [ErisaEOBAddress1]) AS [ErisaEOBAddress1], Convert(VarChar(250), [ErisaEOBAddress2]) AS [ErisaEOBAddress2], Convert(VarChar(250), [ErisaEOBCity]) AS [ErisaEOBCity], Convert(VarChar(250), [ErisaEOBState]) AS [ErisaEOBState], Convert(VarChar(250), [ErisaEOBZip]) AS [ErisaEOBZip], Convert(VarChar(250), [ErisaEOBPhone]) AS [ErisaEOBPhone], Convert(VarChar(250), [ErisaPAName]) AS [ErisaPAName], 
Convert(VarChar(250), [ErisaPAAddress1]) AS [ErisaPAAddress1], Convert(VarChar(250), [ErisaPAAddress2]) AS [ErisaPAAddress2], Convert(VarChar(250), [ErisaPACity]) AS [ErisaPACity], Convert(VarChar(250), [ErisaPAState]) AS [ErisaPAState], Convert(VarChar(250), [ErisaPAZip]) AS [ErisaPAZip], Convert(VarChar(250), [ErisaPAPhone]) AS [ErisaPAPhone], Convert(VarChar(250), [ErisaLAName]) AS [ErisaLAName], Convert(VarChar(250), [ErisaLAAddress1]) AS [ErisaLAAddress1], Convert(VarChar(250), [ErisaLAAddress2]) AS [ErisaLAAddress2], Convert(VarChar(250), [ErisaLACity]) AS [ErisaLACity], Convert(VarChar(250), [ErisaLAState]) AS [ErisaLAState], Convert(VarChar(250), [ErisaLAZip]) AS [ErisaLAZip], Convert(VarChar(250), [ErisaLAPhone]) AS [ErisaLAPhone], Convert(VarChar(250), [ERISAComments]) AS [ERISAComments], Convert(VarChar(250), [CSNApproval]) AS [CSNApproval], Convert(VarChar(250), [CSNPPO]) AS [CSNPPO], Convert(VarChar(250), [CSNOAP]) AS [CSNOAP], 
Convert(VarChar(250), [CSNSupplemental]) AS [CSNSupplemental], Convert(VarChar(250), [CSNReplacement]) AS [CSNReplacement], Convert(VarChar(250), [CSNType]) AS [CSNType], Convert(VarChar(250), [CSNNBNIL915]) AS [CSNNBNIL915], Convert(VarChar(250), [CSNNBNPA910]) AS [CSNNBNPA910], Convert(VarChar(250), [CSNNBNPA911]) AS [CSNNBNPA911], Convert(VarChar(250), [CSNNBNFL918]) AS [CSNNBNFL918], Convert(VarChar(250), [CSNNBNCA915]) AS [CSNNBNCA915], Convert(VarChar(250), [CSNNBNMA904]) AS [CSNNBNMA904], Convert(VarChar(250), [CSNOwnLogo]) AS [CSNOwnLogo], Convert(VarChar(250), [CSNNBNAllBranches]) AS [CSNNBNAllBranches], Convert(VarChar(250), [CSNNBNBranchComment]) AS [CSNNBNBranchComment], Convert(VarChar(250), [ASOStopLoss]) AS [ASOStopLoss], Convert(VarChar(250), [ASOCigna]) AS [ASOCigna], Convert(VarChar(250), [ASOThirdParty]) AS [ASOThirdParty], Convert(VarChar(250), [ASORetirees]) AS [ASORetirees], Convert(VarChar(250), [ISOStopLoss]) AS [ISOStopLoss], 
Convert(VarChar(250), [ISOCigna]) AS [ISOCigna], Convert(VarChar(250), [ISOThirdParty]) AS [ISOThirdParty], Convert(VarChar(250), [ISORetirees]) AS [ISORetirees], Convert(VarChar(250), [ASOReimbCigna]) AS [ASOReimbCigna], Convert(VarChar(250), [ASOReimbOther]) AS [ASOReimbOther] 

字符串几乎总是不断变化的,所以我不能硬编码的中断,它一定是动态完成。

我知道一点SQL但不足以做到这一点,我甚至不知道从哪里开始。

有人给了我这个代码,但它的作用是第950个字符之后插入一个换行符:

declare @var nvarchar(max) = 'SELECT TransID, Convert(VarChar(250), [TPSYN]) AS [TPSYN], Convert(VarChar(250), [SureFitYN]) AS [SureFitYN], Convert(VarChar(250), [AccountNbr]) AS [AccountNbr], Convert(VarChar(250), [Account Name]) AS [Account Name], Convert(VarChar(250), [EffectiveDate]) AS [EffectiveDate], Convert(VarChar(250), [IM]) AS [IM], Convert(VarChar(250), [RevisionDate]) AS [RevisionDate], Convert(VarChar(250), [AccountAddress]) AS [AccountAddress], Convert(VarChar(250), [LSOCode]) AS [LSOCode], Convert(VarChar(250), [ASONonASOBoth]) AS [ASONonASOBoth], Convert(VarChar(250), [MedicalYN]) AS [MedicalYN], Convert(VarChar(250), [NonManagedCareYN]) AS [NonManagedCareYN], Convert(VarChar(250), [ManagedCareYN]) AS [ManagedCareYN], Convert(VarChar(250), [HRAYN]) AS [HRAYN], Convert(VarChar(250), [MedHRAYN]) AS [MedHRAYN], Convert(VarChar(250), [LPHRAYN]) AS [LPHRAYN], Convert(VarChar(250), [HealthyFutYN]) AS [HealthyFutYN], Convert(VarChar(250), [HAHRAYN]) AS [HAHRAYN], Convert(VarChar(250), [HSAYN]) AS [HSAYN], Convert(VarChar(25 
0), [FSAHealthCare]) AS [FSAHealthCare], Convert(VarChar(250), [FSADependentCare]) AS [FSADependentCare], Convert(VarChar(250), [DentalYN]) AS [DentalYN], Convert(VarChar(250), [TaftHartley]) AS [TaftHartley], Convert(VarChar(250), [ParameterComments]) AS [ParameterComments], Convert(VarChar(250), [MLRAvgLivesNumber]) AS [MLRAvgLivesNumber], Convert(VarChar(250), [MLRAvgLivesRptYear]) AS [MLRAvgLivesRptYear], Convert(VarChar(250), [MLRContact]) AS [MLRContact], Convert(VarChar(250), [MLRContactAddress1]) AS [MLRContactAddress1], Convert(VarChar(250), [MLRContactAddress2]) AS [MLRContactAddress2], Convert(VarChar(250), [MLRContactCity]) AS [MLRContactCity], Convert(VarChar(250), [MLRContactState]) AS [MLRContactState], Convert(VarChar(250), [MLRContactZip]) AS [MLRContactZip], Convert(VarChar(250), [HealthRiskAssessment]) AS [HealthRiskAssessment], Convert(VarChar(250), [ErisaYN]) AS [ErisaYN], Convert(VarChar(250), [ErisaPlanName]) AS [ErisaPlanName], Convert(VarChar(250), [ErisaPlanNumber]) AS [ErisaPlanNum 
ber], Convert(VarChar(250), [ErisaPlanEndsMM]) AS [ErisaPlanEndsMM], Convert(VarChar(250), [ErisaPlanEndsDD]) AS [ErisaPlanEndsDD], Convert(VarChar(250), [ErisaAdministrator]) AS [ErisaAdministrator], Convert(VarChar(250), [ErisaClaimAdministrator]) AS [ErisaClaimAdministrator], Convert(VarChar(250), [ErisaCost]) AS [ErisaCost], Convert(VarChar(250), [ErisaEOB]) AS [ErisaEOB], Convert(VarChar(250), [ErisaEOBName]) AS [ErisaEOBName], Convert(VarChar(250), [ErisaEOBAddress1]) AS [ErisaEOBAddress1], Convert(VarChar(250), [ErisaEOBAddress2]) AS [ErisaEOBAddress2], Convert(VarChar(250), [ErisaEOBCity]) AS [ErisaEOBCity], Convert(VarChar(250), [ErisaEOBState]) AS [ErisaEOBState], Convert(VarChar(250), [ErisaEOBZip]) AS [ErisaEOBZip], Convert(VarChar(250), [ErisaEOBPhone]) AS [ErisaEOBPhone], Convert(VarChar(250), [ErisaPAName]) AS [ErisaPAName], Convert(VarChar(250), [ErisaPAAddress1]) AS [ErisaPAAddress1], Convert(VarChar(250), [ErisaPAAddress2]) AS [ErisaPAAddress2], Convert(VarChar(250), [ErisaPACity]) AS [Eris 
aPACity], Convert(VarChar(250), [ErisaPAState]) AS [ErisaPAState], Convert(VarChar(250), [ErisaPAZip]) AS [ErisaPAZip], Convert(VarChar(250), [ErisaPAPhone]) AS [ErisaPAPhone], Convert(VarChar(250), [ErisaLAName]) AS [ErisaLAName], Convert(VarChar(250), [ErisaLAAddress1]) AS [ErisaLAAddress1], Convert(VarChar(250), [ErisaLAAddress2]) AS [ErisaLAAddress2], Convert(VarChar(250), [ErisaLACity]) AS [ErisaLACity], Convert(VarChar(250), [ErisaLAState]) AS [ErisaLAState], Convert(VarChar(250), [ErisaLAZip]) AS [ErisaLAZip], Convert(VarChar(250), [ErisaLAPhone]) AS [ErisaLAPhone], Convert(VarChar(250), [ERISAComments]) AS [ERISAComments], Convert(VarChar(250), [CSNApproval]) AS [CSNApproval], Convert(VarChar(250), [CSNPPO]) AS [CSNPPO], Convert(VarChar(250), [CSNOAP]) AS [CSNOAP], Convert(VarChar(250), [CSNSupplemental]) AS [CSNSupplemental], Convert(VarChar(250), [CSNReplacement]) AS [CSNReplacement], Convert(VarChar(250), [CSNType]) AS [CSNType], Convert(VarChar(250), [CSNNBNIL915]) AS [CSNNBNIL915], Convert(VarCh 
ar(250), [CSNNBNPA910]) AS [CSNNBNPA910], Convert(VarChar(250), [CSNNBNPA911]) AS [CSNNBNPA911], Convert(VarChar(250), [CSNNBNFL918]) AS [CSNNBNFL918], Convert(VarChar(250), [CSNNBNCA915]) AS [CSNNBNCA915], Convert(VarChar(250), [CSNNBNMA904]) AS [CSNNBNMA904], Convert(VarChar(250), [CSNOwnLogo]) AS [CSNOwnLogo], Convert(VarChar(250), [CSNNBNAllBranches]) AS [CSNNBNAllBranches], Convert(VarChar(250), [CSNNBNBranchComment]) AS [CSNNBNBranchComment], Convert(VarChar(250), [ASOStopLoss]) AS [ASOStopLoss], Convert(VarChar(250), [ASOCigna]) AS [ASOCigna], Convert(VarChar(250), [ASOThirdParty]) AS [ASOThirdParty], Convert(VarChar(250), [ASORetirees]) AS [ASORetirees], Convert(VarChar(250), [ISOStopLoss]) AS [ISOStopLoss], Convert(VarChar(250), [ISOCigna]) AS [ISOCigna], Convert(VarChar(250), [ISOThirdParty]) AS [ISOThirdParty], Convert(VarChar(250), [ISORetirees]) AS [ISORetirees], Convert(VarChar(250), [ASOReimbCigna]) AS [ASOReimbCigna], Convert(VarChar(250), [ASOReimbOther]) AS [ASOReimbOther]' 



Declare @a table (pos int, rn int identity(1,1)) 
Declare @ct int = 0 
Declare @pos int 
Declare @oldpos int 
Select @oldpos=0 
select @pos=charindex(char(10),@var) 
while @ct <= (select len(@var) - len(replace(@var,char(10),''))) 
    begin 
    insert into @a Values (@pos) 
    Select @[email protected] 
    select @pos=charindex(char(10),Substring(@var,@pos + 1,len(@var))) + @pos 
    select @ct = @ct + 1 
end 

Select 
    --*, 
    substring(@var,isnull(a2.pos,0),a1.pos) as SubSet 
from @a a1 
left join @a a2 on a2.rn = a1.rn - 1 


--edit for your comment... 

select 
    --forces a CR at the comma before 950 characters 
    stuff(replace(@var,char(10),''),charindex('],',replace(@var,char(10),''),950),0,CHAR(13)+CHAR(10)) 
+1

[打破串起来,当它充满了表的字段名]的可能的复制(https://开头计算器.com/questions/44314803 /使用表格字段名称填充字符时) – scsimon

+0

是的,我想删除那一个。 –

+0

这是重复的,你从一开始就不清楚。在不满意之后,您不断更改问题和要求。你的配置文件说你是一个SQL服务器主,但问题不是[MCVE](https://*.com/help/mcve),你需要[真正学习如何提出sql问题](https:/ /spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/) – scsimon

Declare @S varchar(max) = 'TransID, Convert(VarChar(250), [TPSYN]) AS [TPSYN], Convert(VarChar(250), [SureFitYN]) AS [SureFitYN], Convert(VarChar(250), [AccountNbr]) AS [AccountNbr], Convert(VarChar(250), [Account Name]) AS [Account Name], Convert(VarChar(250), [EffectiveDate]) AS [EffectiveDate], Convert(VarChar(250), [IM]) AS [IM], Convert(VarChar(250), [RevisionDate]) AS [RevisionDate], Convert(VarChar(250), [AccountAddress]) AS [AccountAddress], Convert(VarChar(250), [LSOCode]) AS [LSOCode], Convert(VarChar(250), [ASONonASOBoth]) AS [ASONonASOBoth], Convert(VarChar(250), [MedicalYN]) AS [MedicalYN], Convert(VarChar(250), [NonManagedCareYN]) AS [NonManagedCareYN], Convert(VarChar(250), [ManagedCareYN]) AS [ManagedCareYN], Convert(VarChar(250), [HRAYN]) AS [HRAYN], Convert(VarChar(250), [MedHRAYN]) AS [MedHRAYN], Convert(VarChar(250), [LPHRAYN]) AS [LPHRAYN], Convert(VarChar(250), [HealthyFutYN]) AS [HealthyFutYN], Convert(VarChar(250), [HAHRAYN]) AS [HAHRAYN], Convert(VarChar(250), [HSAYN]) AS [HSAYN], Convert(VarChar(250), [FSAHealthCare]) AS [FSAHealthCare], Convert(VarChar(250), [FSADependentCare]) AS [FSADependentCare], Convert(VarChar(250), [DentalYN]) AS [DentalYN], Convert(VarChar(250), [TaftHartley]) AS [TaftHartley], Convert(VarChar(250), [ParameterComments]) AS [ParameterComments], Convert(VarChar(250), [MLRAvgLivesNumber]) AS [MLRAvgLivesNumber], Convert(VarChar(250), [MLRAvgLivesRptYear]) AS [MLRAvgLivesRptYear], Convert(VarChar(250), [MLRContact]) AS [MLRContact], Convert(VarChar(250), [MLRContactAddress1]) AS [MLRContactAddress1], Convert(VarChar(250), [MLRContactAddress2]) AS [MLRContactAddress2], Convert(VarChar(250), [MLRContactCity]) AS [MLRContactCity], Convert(VarChar(250), [MLRContactState]) AS [MLRContactState], Convert(VarChar(250), [MLRContactZip]) AS [MLRContactZip], Convert(VarChar(250), [HealthRiskAssessment]) AS [HealthRiskAssessment], Convert(VarChar(250), [ErisaYN]) AS [ErisaYN], Convert(VarChar(250), [ErisaPlanName]) AS [ErisaPlanName], Convert(VarChar(250), [ErisaPlanNumber]) AS [ErisaPlanNumber], Convert(VarChar(250), [ErisaPlanEndsMM]) AS [ErisaPlanEndsMM], Convert(VarChar(250), [ErisaPlanEndsDD]) AS [ErisaPlanEndsDD], Convert(VarChar(250), [ErisaAdministrator]) AS [ErisaAdministrator], Convert(VarChar(250), [ErisaClaimAdministrator]) AS [ErisaClaimAdministrator], Convert(VarChar(250), [ErisaCost]) AS [ErisaCost], Convert(VarChar(250), [ErisaEOB]) AS [ErisaEOB], Convert(VarChar(250), [ErisaEOBName]) AS [ErisaEOBName], Convert(VarChar(250), [ErisaEOBAddress1]) AS [ErisaEOBAddress1], Convert(VarChar(250), [ErisaEOBAddress2]) AS [ErisaEOBAddress2], Convert(VarChar(250), [ErisaEOBCity]) AS [ErisaEOBCity], Convert(VarChar(250), [ErisaEOBState]) AS [ErisaEOBState], Convert(VarChar(250), [ErisaEOBZip]) AS [ErisaEOBZip], Convert(VarChar(250), [ErisaEOBPhone]) AS [ErisaEOBPhone], Convert(VarChar(250), [ErisaPAName]) AS [ErisaPAName], Convert(VarChar(250), [ErisaPAAddress1]) AS [ErisaPAAddress1], Convert(VarChar(250), [ErisaPAAddress2]) AS [ErisaPAAddress2], Convert(VarChar(250), [ErisaPACity]) AS [ErisaPACity], Convert(VarChar(250), [ErisaPAState]) AS [ErisaPAState], Convert(VarChar(250), [ErisaPAZip]) AS [ErisaPAZip], Convert(VarChar(250), [ErisaPAPhone]) AS [ErisaPAPhone], Convert(VarChar(250), [ErisaLAName]) AS [ErisaLAName], Convert(VarChar(250), [ErisaLAAddress1]) AS [ErisaLAAddress1], Convert(VarChar(250), [ErisaLAAddress2]) AS [ErisaLAAddress2], Convert(VarChar(250), [ErisaLACity]) AS [ErisaLACity], Convert(VarChar(250), [ErisaLAState]) AS [ErisaLAState], Convert(VarChar(250), [ErisaLAZip]) AS [ErisaLAZip], Convert(VarChar(250), [ErisaLAPhone]) AS [ErisaLAPhone], Convert(VarChar(250), [ERISAComments]) AS [ERISAComments], Convert(VarChar(250), [CSNApproval]) AS [CSNApproval], Convert(VarChar(250), [CSNPPO]) AS [CSNPPO], Convert(VarChar(250), [CSNOAP]) AS [CSNOAP], Convert(VarChar(250), [CSNSupplemental]) AS [CSNSupplemental], Convert(VarChar(250), [CSNReplacement]) AS [CSNReplacement], Convert(VarChar(250), [CSNType]) AS [CSNType], Convert(VarChar(250), [CSNNBNIL915]) AS [CSNNBNIL915], Convert(VarChar(250), [CSNNBNPA910]) AS [CSNNBNPA910], Convert(VarChar(250), [CSNNBNPA911]) AS [CSNNBNPA911], Convert(VarChar(250), [CSNNBNFL918]) AS [CSNNBNFL918], Convert(VarChar(250), [CSNNBNCA915]) AS [CSNNBNCA915], Convert(VarChar(250), [CSNNBNMA904]) AS [CSNNBNMA904], Convert(VarChar(250), [CSNOwnLogo]) AS [CSNOwnLogo], Convert(VarChar(250), [CSNNBNAllBranches]) AS [CSNNBNAllBranches], Convert(VarChar(250), [CSNNBNBranchComment]) AS [CSNNBNBranchComment], Convert(VarChar(250), [ASOStopLoss]) AS [ASOStopLoss], Convert(VarChar(250), [ASOCigna]) AS [ASOCigna], Convert(VarChar(250), [ASOThirdParty]) AS [ASOThirdParty], Convert(VarChar(250), [ASORetirees]) AS [ASORetirees], Convert(VarChar(250), [ISOStopLoss]) AS [ISOStopLoss], Convert(VarChar(250), [ISOCigna]) AS [ISOCigna], Convert(VarChar(250), [ISOThirdParty]) AS [ISOThirdParty], Convert(VarChar(250), [ISORetirees]) AS [ISORetirees], Convert(VarChar(250), [ASOReimbCigna]) AS [ASOReimbCigna], Convert(VarChar(250), [ASOReimbOther]) AS [ASOReimbOther]' 

;with cte as (
       Select *,Grp = sum(len(RetVal)-0) over (Order By RetSeq)/950 
       From [dbo].[udf-Str-Parse-8K](replace(@S,'],','],|'),'|') 
) 
Select S = replace(Stuff((Select '' +String + '|||' 
    From (
      Select Grp 
        ,String = (Select Stuff((Select ' '+RetVal From cte Where Grp=A.Grp For XML Path ('')),1,1,'')) 
      From (Select Distinct Grp From cte) A 
     ) A 
    Order by Grp 
    For XML Path ('')),1,0,'') 
    ,'|||',char(13)) 

返回

TransID, Convert(VarChar(250), [TPSYN]) AS [TPSYN], Convert(VarChar(250), [SureFitYN]) AS [SureFitYN], Convert(VarChar(250), [AccountNbr]) AS [AccountNbr], Convert(VarChar(250), [Account Name]) AS [Account Name], Convert(VarChar(250), [EffectiveDate]) AS [EffectiveDate], Convert(VarChar(250), [IM]) AS [IM], Convert(VarChar(250), [RevisionDate]) AS [RevisionDate], Convert(VarChar(250), [AccountAddress]) AS [AccountAddress], Convert(VarChar(250), [LSOCode]) AS [LSOCode], Convert(VarChar(250), [ASONonASOBoth]) AS [ASONonASOBoth], Convert(VarChar(250), [MedicalYN]) AS [MedicalYN], Convert(VarChar(250), [NonManagedCareYN]) AS [NonManagedCareYN], Convert(VarChar(250), [ManagedCareYN]) AS [ManagedCareYN], Convert(VarChar(250), [HRAYN]) AS [HRAYN], Convert(VarChar(250), [MedHRAYN]) AS [MedHRAYN], Convert(VarChar(250), [LPHRAYN]) AS [LPHRAYN], Convert(VarChar(250), [HealthyFutYN]) AS [HealthyFutYN], Convert(VarChar(250), [HAHRAYN]) AS [HAHRAYN], 
Convert(VarChar(250), [HSAYN]) AS [HSAYN], Convert(VarChar(250), [FSAHealthCare]) AS [FSAHealthCare], Convert(VarChar(250), [FSADependentCare]) AS [FSADependentCare], Convert(VarChar(250), [DentalYN]) AS [DentalYN], Convert(VarChar(250), [TaftHartley]) AS [TaftHartley], Convert(VarChar(250), [ParameterComments]) AS [ParameterComments], Convert(VarChar(250), [MLRAvgLivesNumber]) AS [MLRAvgLivesNumber], Convert(VarChar(250), [MLRAvgLivesRptYear]) AS [MLRAvgLivesRptYear], Convert(VarChar(250), [MLRContact]) AS [MLRContact], Convert(VarChar(250), [MLRContactAddress1]) AS [MLRContactAddress1], Convert(VarChar(250), [MLRContactAddress2]) AS [MLRContactAddress2], Convert(VarChar(250), [MLRContactCity]) AS [MLRContactCity], Convert(VarChar(250), [MLRContactState]) AS [MLRContactState], Convert(VarChar(250), [MLRContactZip]) AS [MLRContactZip], Convert(VarChar(250), [HealthRiskAssessment]) AS [HealthRiskAssessment], Convert(VarChar(250), [ErisaYN]) AS [ErisaYN], 
Convert(VarChar(250), [ErisaPlanName]) AS [ErisaPlanName], Convert(VarChar(250), [ErisaPlanNumber]) AS [ErisaPlanNumber], Convert(VarChar(250), [ErisaPlanEndsMM]) AS [ErisaPlanEndsMM], Convert(VarChar(250), [ErisaPlanEndsDD]) AS [ErisaPlanEndsDD], Convert(VarChar(250), [ErisaAdministrator]) AS [ErisaAdministrator], Convert(VarChar(250), [ErisaClaimAdministrator]) AS [ErisaClaimAdministrator], Convert(VarChar(250), [ErisaCost]) AS [ErisaCost], Convert(VarChar(250), [ErisaEOB]) AS [ErisaEOB], Convert(VarChar(250), [ErisaEOBName]) AS [ErisaEOBName], Convert(VarChar(250), [ErisaEOBAddress1]) AS [ErisaEOBAddress1], Convert(VarChar(250), [ErisaEOBAddress2]) AS [ErisaEOBAddress2], Convert(VarChar(250), [ErisaEOBCity]) AS [ErisaEOBCity], Convert(VarChar(250), [ErisaEOBState]) AS [ErisaEOBState], Convert(VarChar(250), [ErisaEOBZip]) AS [ErisaEOBZip], Convert(VarChar(250), [ErisaEOBPhone]) AS [ErisaEOBPhone], Convert(VarChar(250), [ErisaPAName]) AS [ErisaPAName], 
Convert(VarChar(250), [ErisaPAAddress1]) AS [ErisaPAAddress1], Convert(VarChar(250), [ErisaPAAddress2]) AS [ErisaPAAddress2], Convert(VarChar(250), [ErisaPACity]) AS [ErisaPACity], Convert(VarChar(250), [ErisaPAState]) AS [ErisaPAState], Convert(VarChar(250), [ErisaPAZip]) AS [ErisaPAZip], Convert(VarChar(250), [ErisaPAPhone]) AS [ErisaPAPhone], Convert(VarChar(250), [ErisaLAName]) AS [ErisaLAName], Convert(VarChar(250), [ErisaLAAddress1]) AS [ErisaLAAddress1], Convert(VarChar(250), [ErisaLAAddress2]) AS [ErisaLAAddress2], Convert(VarChar(250), [ErisaLACity]) AS [ErisaLACity], Convert(VarChar(250), [ErisaLAState]) AS [ErisaLAState], Convert(VarChar(250), [ErisaLAZip]) AS [ErisaLAZip], Convert(VarChar(250), [ErisaLAPhone]) AS [ErisaLAPhone], Convert(VarChar(250), [ERISAComments]) AS [ERISAComments], Convert(VarChar(250), [CSNApproval]) AS [CSNApproval], Convert(VarChar(250), [CSNPPO]) AS [CSNPPO], Convert(VarChar(250), [CSNOAP]) AS [CSNOAP], 
Convert(VarChar(250), [CSNSupplemental]) AS [CSNSupplemental], Convert(VarChar(250), [CSNReplacement]) AS [CSNReplacement], Convert(VarChar(250), [CSNType]) AS [CSNType], Convert(VarChar(250), [CSNNBNIL915]) AS [CSNNBNIL915], Convert(VarChar(250), [CSNNBNPA910]) AS [CSNNBNPA910], Convert(VarChar(250), [CSNNBNPA911]) AS [CSNNBNPA911], Convert(VarChar(250), [CSNNBNFL918]) AS [CSNNBNFL918], Convert(VarChar(250), [CSNNBNCA915]) AS [CSNNBNCA915], Convert(VarChar(250), [CSNNBNMA904]) AS [CSNNBNMA904], Convert(VarChar(250), [CSNOwnLogo]) AS [CSNOwnLogo], Convert(VarChar(250), [CSNNBNAllBranches]) AS [CSNNBNAllBranches], Convert(VarChar(250), [CSNNBNBranchComment]) AS [CSNNBNBranchComment], Convert(VarChar(250), [ASOStopLoss]) AS [ASOStopLoss], Convert(VarChar(250), [ASOCigna]) AS [ASOCigna], Convert(VarChar(250), [ASOThirdParty]) AS [ASOThirdParty], Convert(VarChar(250), [ASORetirees]) AS [ASORetirees], Convert(VarChar(250), [ISOStopLoss]) AS [ISOStopLoss], 
Convert(VarChar(250), [ISOCigna]) AS [ISOCigna], Convert(VarChar(250), [ISOThirdParty]) AS [ISOThirdParty], Convert(VarChar(250), [ISORetirees]) AS [ISORetirees], Convert(VarChar(250), [ASOReimbCigna]) AS [ASOReimbCigna], Convert(VarChar(250), [ASOReimbOther]) AS [ASOReimbOther] 

解析UDF - - 如果需要,可以为INLINE

CREATE FUNCTION [dbo].[udf-Str-Parse-8K] (@String varchar(max),@Delimiter varchar(25)) 
Returns Table 
As 
Return ( 
    with cte1(N) As (Select 1 From (Values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) N(N)), 
      cte2(N) As (Select Top (IsNull(DataLength(@String),0)) Row_Number() over (Order By (Select NULL)) From (Select N=1 From cte1 a,cte1 b,cte1 c,cte1 d) A), 
      cte3(N) As (Select 1 Union All Select t.N+DataLength(@Delimiter) From cte2 t Where Substring(@String,t.N,DataLength(@Delimiter)) = @Delimiter), 
      cte4(N,L) As (Select S.N,IsNull(NullIf(CharIndex(@Delimiter,@String,s.N),0)-S.N,8000) From cte3 S) 

    Select RetSeq = Row_Number() over (Order By A.N) 
      ,RetVal = LTrim(RTrim(Substring(@String, A.N, A.L))) 
    From cte4 A 
); 
--Orginal Source http://www.sqlservercentral.com/articles/Tally+Table/72993/ 
--Select * from [dbo].[udf-Str-Parse-8K]('Dog,Cat,House,Car',',') 
--Select * from [dbo].[udf-Str-Parse-8K]('John||Cappelletti||was||here','||') 

编辑 - INLINE Verserion(无需对UDF)

;with cte as (
       Select *,Grp = sum(len(RetVal)-0) over (Order By RetSeq)/950 
       From (
         Select RetSeq = Row_Number() over (Order By (Select null)) 
           ,RetVal = LTrim(RTrim(B.i.value('(./text())[1]', 'varchar(max)'))) 
         From (Select x = Cast('<x>' + replace((Select replace(replace(@S,'],','],|'),'|','§§Split§§') as [*] For XML Path('')),'§§Split§§','</x><x>')+'</x>' as xml).query('.')) as A 
         Cross Apply x.nodes('x') AS B(i) 
         ) A 
) 
Select S = replace(Stuff((Select '' +String + '|||' 
    From (
      Select Grp 
        ,String = (Select Stuff((Select ' '+RetVal From cte Where Grp=A.Grp For XML Path ('')),1,1,'')) 
      From (Select Distinct Grp From cte) A 
     ) A 
    Order by Grp 
    For XML Path ('')),1,0,'') 
    ,'|||',char(13)) 
+0

我不知道我是否没有正确运行或理解输出,但是当我将输出粘贴到Textpad中时,我将所有内容都放在一行上。根本没有换行符。我需要大约每950个字符换行,具体取决于最接近的“],”实例的位置。 –

+0

我刚刚更新了问题,以显示结果字符串应该是什么样子。 –

+0

FRICKIN'BRILLIANT!我使用了Inline版本,并且它是现货。 谢谢! –