2016-04-20 3 views
0

Мне нужно написать SQL-запрос, где я могу сравнить результаты с кубом Excel. Для конкретной таблицы она была обновлена ​​для всех номеров контрактов с 5 знаками, где они добавили 0 перед каждым пятизначным номером. И они оставили оставшееся число i.e 6 цифр чисел то же самое. Но это обновление сделано в пакете ETL, а добавленный 0 прозрачен для меня, то есть я не вижу его в таблице.Как написать SQL-запрос для этого случая?

Например: для 90034 они добавили 0 в начале номера i.e 090034, но в пакете ETL оно выглядит как 90034 в таблице, где 0 перед 90034 является прозрачным.

И в кубе Excel все числа 6 цифр номера напр., 090034

Итак, как я могу написать запрос SQL, чтобы проверить, если все 5 цифр номера были добавлены с 0 в начале и сравнить его с кубом Excel?

+0

Каков тип данных столбца, который содержит данные в вашей базе данных? –

+0

Возможно, проблема заключается в том, что вы храните строковые данные в числовом типе данных, который отделяет начальные нули. – HLGEM

+0

Столбец в таблице - строка –

ответ

0

Вот фрагмент, который добавит ведущие нули к номерам шести или меньшего количества цифр:

select right('000000' + convert(varchar(6), MyID), 6) 

Это предполагает, что ваша колонка называется MyID и что это числовой тип данных уже. Если это уже строка, вы можете попробовать это:

select right('000000' + ltrim(rtrim(MyID)), 6) 

ОТВЕТСТВЕННОСТИ: Это было сделано из памяти и не тестируются.

+0

Столбец в таблице представляет собой строку. –

+0

Получил это спасибо :) –

0

Его лучше для сравнения, если данные в базе данных хранятся в виде varchar или nvarchar, поскольку это явно НЕ число или оно не имеет начальных нулей.

Если вы не можете исправить это и знать число общего символа, которое должна иметь строка, этот метод поможет.

create table #test (myfield int) 
insert into #test (myfield) 
values(090034) 
select * from #test 
select Right('000000' + cast(myfield as varchar(6)) , 6) from #test 
+0

Получил спасибо спасибо :) –