Replicate

  • Автор темы lapo4ka
  • Дата начала
L

lapo4ka

#1
Добрый день!
Помогите разобраться с такой проблемой:
делаю выгрузку типа р-макета ( сначала создаю свою временную таблицу со всеми данными) там есть поля с суммами, их размер - 9 символов. Если число меньше 9 символов, то осташееся свободное место добивается "0" слева. Никак не получается это!!!!! точнее так: если брать просто select с таблицы с одним значением, то все ок. если же пытаться провернуть update таблицы для этого поля, то ничего не выходит. А нужен имеено update , тк потом используется курсор, куда загоняются все поля этой таблицы

update #schet set amound=convert(varchar(18),(REPLICATE(' ',9 - DATALENGTH(convert(varchar(9), amound) ))+convert(varchar(9), amound)))
from #schet
amound
-----------
100000

просто select
select (convert(varchar(9),(REPLICATE('0',9 - DATALENGTH(convert(varchar(9), amound) ))+convert(varchar(9), amound)))) from #schet
---------
000100000

может я где-то неправа? или что-то другое можно использовать. не REPLICATE??
Помогите пож)) :)
 
L

lapo4ka

#2
не работает((
не добавляет никак "0"
update #schet set amound=convert(varchar(18),(replicate('0', 9-len(cast(floor(amound) as varchar))) + cast(floor(amound) as varchar)))
from #schet
получается amound
-----------
100000
 
L

lapo4ka

#3
у меня amound int, вообще там деньги должны быть, но нужно значение без запятой. что же мне делать?((( как правильно написать?(( :)
 
L

lapo4ka

#4
решила делать доп таблицу. большое спасибо)))