2016-12-07 4 views
0

Я пытаюсь вернуть определенное количество символов в поле. В основном мне нужно 20 персонажей.Возврат определенного количества цифр

Так что, если поле возвращает «123»

Я хочу, чтобы это было «123 вставки 17 пространств»

Поле не всегда три символа - иногда его более или менее

Это оленья кожа похоже, работают. У меня есть одно возвращение, где мое поле - 10 цифр, и это нормально, но когда я получаю поле, которое составляет 11 цифр, код не помещает 9 пробелов, он помещает в 10 - мне нужно всего 20 символов. Что я прокомментировал, все возвращают те же результаты.

concat(
right(replace(oe_hdr.po_no, '-', ''),8), 
right(concat('000',job_price_line.line_no),3), 
format(oe_pick_ticket_detail.unit_quantity, '00000000'), 
--left(job_price_line.customer_part_no + '     ',20), 
--job_price_line.customer_part_no, '   ', 
cast(job_price_line.customer_part_no as char(20)), 
oe_pick_ticket.invoice_no) as [po/line/release/qty/cust part no as 20 characters/invoice] 

http://imgur.com/a/OQKDh

3013035401300000001F6740000008   1211455 
80190473005000004000420232800   1209306 

EDIT_ Я предполагаю, что это работает. По какой-то причине студия управления сервером sql показывает их вне линии (см. Imgur), но когда я экспортирую в csv, ее штраф ..... извините.

+6

приведение к CHAR (20) – SeanC

ответ

1

Вы можете CAST данные для фиксированной длины типа данных CHAR

Select Cast('123' as CHAR(20)) 
2

Другой подход может быть следующее:

SELECT LEFT('123' + '     ', 20) 
Смежные вопросы