Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Преобразования 12-ти значного числа в 5-ти значное  [new]
AbraKadabra2211
Guest
Есть таблица table_1
С полями kod (bigint), name (varchar(25))
Столбец kod имеет следующий вид:
kod
----
254657892556
221765892545
254657892556
460611092537
254657892545
267657892556
и т.д.

нужно привести к виду 6-ти значных чисел
254657
221765
254657
и т.д.

Какой должен быть запрос??

пробовал через cast, convert ничего не получается, извините за нубский вопрос, прошу помощи, очень срочно нужно
select CAST (kod as numberic(6))
from table_1
видимо так нельзя пробовал иные комбинации, все равно не получается
запрос нужно сделать по столбцу а не по отдельной строке, т.к. количество строк в столбце огромное количество
24 май 13, 09:31    [14342563]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования 12-ти значного числа в 5-ти значное  [new]
Glory
Member

Откуда:
Сообщений: 104751
AbraKadabra2211
видимо так нельзя пробовал иные комбинации, все равно не получается

Там была комбинация преобразования в строку с последующим выбором нужной подстроки ?
А комбинация деления на 1000000.00 с последующим округлением ?
24 май 13, 09:36    [14342601]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования 12-ти значного числа в 5-ти значное  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1887
declare @table_1 table (kod bigint)
insert into @table_1(kod)values(254657892556),(221765892545),(254657892556)

select CAST (LEFT(CAST(kod as varchar(20)),6) as numeric(6))
from @table_1
24 май 13, 09:48    [14342687]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования 12-ти значного числа в 5-ти значное  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31863
AbraKadabra2211
Какой должен быть запрос??
2 варианта:
1. разделить на милион, только без округления
2. преобразовать в строку (convert), потом взять 6 левых символов (left)
24 май 13, 09:57    [14342765]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования 12-ти значного числа в 5-ти значное  [new]
iap
Member

Откуда: Москва
Сообщений: 47083
SELECT ROUND(CAST(254657892556 AS BIGINT),-6,1)/1000000;
24 май 13, 09:57    [14342768]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования 12-ти значного числа в 5-ти значное  [new]
AbraKadabra2211
Guest
-Там была комбинация преобразования в строку с последующим выбором нужной подстроки ?
не умею

-А комбинация деления на 1000000.00 с последующим округлением ?

сделал так

select CAST(kod/1000000.00 as numeric(6,0))
from table_1

получилось, спасибо за подсказку
24 май 13, 09:58    [14342783]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования 12-ти значного числа в 5-ти значное  [new]
AbraKadabra2211
Guest
select LEFT (kod,6) as kod, name
from table_1

с лефт понрав больше

еще раз всем спасибо:)
24 май 13, 11:03    [14343324]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования 12-ти значного числа в 5-ти значное  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31863
AbraKadabra2211
сделал так

select CAST(kod/1000000.00 as numeric(6,0))
from table_1

получилось, спасибо за подсказку
Неправильно ведь, вам уже говорили

select CAST(254657892556/1000000.00 as numeric(6,0))
получаем 254658
а нужно по вашим словам 254657

Так что лучше LEFT
24 май 13, 11:32    [14343548]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования 12-ти значного числа в 5-ти значное  [new]
iap
Member

Откуда: Москва
Сообщений: 47083
alexeyvg
Так что лучше LEFT
А ROUND()?
24 май 13, 11:45    [14343666]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования 12-ти значного числа в 5-ти значное  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
AbraKadabra2211,

так к слову скажу - что потом получить изначальные значение не выйдет ,если проапдейтить таблицу
24 май 13, 11:50    [14343702]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования 12-ти значного числа в 5-ти значное  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31863
iap
alexeyvg
Так что лучше LEFT
А ROUND()?
Ну да, тоже хорошо, только боюсь у ТС там вообще может быть бардак, даже не цифры...
24 май 13, 12:10    [14343902]     Ответить | Цитировать Сообщить модератору
 Re: Преобразования 12-ти значного числа в 5-ти значное  [new]
Glory
Member

Откуда:
Сообщений: 104751
alexeyvg
Ну да, тоже хорошо, только боюсь у ТС там вообще может быть бардак, даже не цифры...

"С полями kod (bigint),"
24 май 13, 12:12    [14343922]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить