|
Posted by Steve Kass on 02/25/07 18:17
Erland,
I've submitted a workaround to this Feedback item. If you
concatenate the empty string '' to the CHAR value before
REPLACE is applied, the hidden conversion to VARCHAR
retains the trailing blanks.
declare @t char(6)
set @t = 'A'
select
replace(@t,space(1),'*'),
replace(@t+'',space(1),'*')
-- Steve Kass
-- Drew University
-- http://www.stevekass.com
-- C70DF007-1034-489C-A71E-108FBC89D553
Erland Sommarskog wrote:
> Erland Sommarskog (esquel@sommarskog.se) writes:
>
>> (paulmac106@gmail.com) writes:
>>
>>>thanks that worked great.
>>>
>>>any idea why this doesn't work:
>>>
>>>REPLACE(CONVERT(CHAR(4),SUM(tblLines.fldUnits)),' ','0')
>>>
>>>it just won't seem to put the zero in....very strange
>>>
>>>i get this for 15: '15 '
>>
>>Good question. Seems like the reailing spaces are stripped when the
>>string is passed to replace(). Probably, because there is a conversion
>>to varchar, but trailing spaces should be retained, as long as the
>>setting ANSI_PADDING is in effect.
>>
>>It looks like a bug to me.
>
>
> For what it's worth, I submitted
> https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=259840
>
> But since it works this way in SQL 2000, I would not really expect
> any fix. It could break existing code.
>
>
[Back to original message]
|