Странная функция Transact Sql LEFT - PullRequest
2 голосов
/ 25 июля 2010
select replace(stuff('123456',2,2,'ABCD'),'1',' ')

select LEFT('ABCD456',4)

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

Хорошо, теперь первый селектор выводит «ABCD456», ряд функций оценивается как то, что именно первый параметр левой функции во втором селекторе второй селектор возвращает «ABCD», так как ожидаемый третий селектор возвращает «ABC»

Почему?Разве он не должен выводить 'ABCD'?Кто-нибудь знает?Заранее спасибо.

1 Ответ

3 голосов
/ 25 июля 2010

Понятнее, если вы сделаете

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

, который возвращает

[ ABC]

Есть пробел!

select stuff('123456',2,2,'ABCD') Дает 1ABCD456

Затем вы заменяете 1 пробелом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...