2015-05-14 2 views
-5
SELECT @list = (seg_tag+ 
       '01'+ 
       CAST(LEN(ID_Type) AS NVARCHAR)+ 
       ID_Type+ 
       '02'+ 
       CAST(LEN(IDNumber) AS NVARCHAR)+ 
       IDNumber) 
FROM #TEMP_TABLE_ID 

В вышеприведенном запросе, что мне нужно сделать, чтобы при распечатке списка длина (в случае ее одной цифры) равна нулю? Пример.SQL Полевая длина

04 for 4 
09 for 9 
14 for 14 

Выборочные данные в #TEMP_TABLE_ID:

seg_tag | ID_Type | IDNumber 
--------+---------+---------- 
PN03 | paras | narang 

И результат должен выглядеть следующим образом: PN03015paras026narang

+0

Пожалуйста, добавьте образцы данных вашего '# TEMP_TABLE_ID' и ваших окончательных ожидаемых результатов;). –

+0

Здесь мой исходный запрос вернет строку, такую ​​как PN03015paras026narang PN03 (т.е. значение seg_tag) 01 (жестко закодированный) 5 (длина id_type) парас (значение id_type) 02 (жесткий код) 6 (длина IDNumber) narang (значение IDNumber) Теперь все, что я хочу, это длины, т. е. 5 и 6 - 05 и 06. –

+0

Вы пытались использовать 'Right ('00' + Cast (5 как NVarChar (2)), 2)'? – HABO

ответ

0

Вам нужно только это:

SELECT @list = seg_tag 
      + '01' + RIGHT('0' + CAST(LEN(ID_Type) AS varchar), 2) 
      + ID_Type 
      + '02' + RIGHT('0' + CAST(LEN(IDNumber) AS varchar), 2) 
      + IDNumber 
FROM #TEMP_TABLE_ID 

Или

SELECT @list = seg_tag 
      + '01' 
      + CASE WHEN LEN(ID_Type) < 10 THEN '0' ELSE '' END + 
      + CAST(LEN(ID_Type) AS varchar) 
      + ID_Type 
      + '02' 
      + CASE WHEN LEN(IDNumber) < 10 THEN '0' ELSE '' END + 
      + CAST(LEN(IDNumber) AS varchar) 
      + IDNumber 
FROM #TEMP_TABLE_ID 
+0

Да, это сработало. Спасибо –

1
SELECT @list = (RIGHT('0'+seg_tag,2)+ 
      '01'+ 
      RIGHT('0'+CAST(LEN(ID_Type) AS NVARCHAR),2)+ 
      RIGHT('0'+ID_Type,2)+ 
      '02'+ 
      RIGHT('0'+CAST(LEN(IDNumber) AS NVARCHAR),2)+ 
      RIGHT('0'+IDNumber,2)) 
FROM #TEMP_TABLE_ID 
+0

НЕ РАБОТАЕТ .... –

+0

ДЛЯ КОТОРЫХ КОЛОНКА ВАМ НУЖНА ZERO –

+0

Как вы можете видеть, этот список представляет собой строку, состоящую из разных значений, среди тех значений, которые я пытаюсь напечатать длину (области) поля. Теперь, эти значения длины - это те, которые я хочу начать с нуля, если и только если это однозначное значение. Вы можете снова взглянуть на пример. –

Смежные вопросы