Para
Para

Reputation: 2082

Transact Sql LEFT function weird output

select replace(stuff('123456',2,2,'ABCD'),'1',' ')

select LEFT('ABCD456',4)

select left(replace(stuff('123456',2,2,'ABCD'),'1',' '),4)

Ok now the first select outputs 'ABCD456', the series of functions evaluates to that exactly the first parameter to the left function in the second select second select returns 'ABCD' as expected third select returns 'ABC'

Why? Shouldn't it also output 'ABCD'? Does anybody know? Thanks in advance.

Upvotes: 2

Views: 255

Answers (1)

Martin Smith
Martin Smith

Reputation: 453328

It is clearer if you do

select '[' + left(replace(stuff('123456',2,2,'ABCD'),'1',' '),4) + ']'

which returns

[ ABC]

There is a leading space!

select stuff('123456',2,2,'ABCD') Gives 1ABCD456

Then you replace the 1 with a space

Upvotes: 3

Related Questions