Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Конвертация с усечением  [new]
user21
Member

Откуда: Местный
Сообщений: 90
Надо конвентировать дробное поле в символьное, но так, чтобы нули после десятичной точки обрезались, например: 10,5000 -> 10.5 или 10.0000 -> 10
Подсказка в BOL:
To remove trailing zeros from a result set when you convert from numeric or decimal data to character data, use the value 128 for style.
У меня: convert(varchar, DIR_ANSW.DRUG_DOSE, 128) - не срабатывает ! :(
SQL 2005 SP2. Есть ли еще какие-нибудь варианты?
18 июн 08, 18:32    [5817265]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация с усечением  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
DECLARE @D DECIMAL(10,5);
SET @D=1302.76;
SELECT REPLACE(RTRIM(REPLACE(CAST(@D AS VARCHAR),0,' ')),' ','0');
18 июн 08, 18:36    [5817289]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация с усечением  [new]
user21
Member

Откуда: Местный
Сообщений: 90
iap
DECLARE @D DECIMAL(10,5);
SET @D=1302.76;
SELECT REPLACE(RTRIM(REPLACE(CAST(@D AS VARCHAR),0,' ')),' ','0');


Работает, спасибо! А можно еще, если число вида 10.0000 еще и убирать дес. точку -> '10' ?
18 июн 08, 18:43    [5817316]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация с усечением  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
user21
iap
DECLARE @D DECIMAL(10,5);
SET @D=1302.76;
SELECT REPLACE(RTRIM(REPLACE(CAST(@D AS VARCHAR),0,' ')),' ','0');


Работает, спасибо! А можно еще, если число вида 10.0000 еще и убирать дес. точку -> '10' ?
DECLARE @D NUMERIC(10,5);
SET @D=1302.00;
SELECT REPLACE(RTRIM(REPLACE(REPLACE(RTRIM(REPLACE(CAST(@D AS VARCHAR),0,' ')),' ','0'),'.',' ')),' ','.');
18 июн 08, 18:47    [5817339]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация с усечением  [new]
user21
Member

Откуда: Местный
Сообщений: 90
Спасибо! То, что нужно.
19 июн 08, 13:19    [5820421]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Конвертация с усечением  [new]
Lithium
Member

Откуда: Волгодонск
Сообщений: 28
Спасибо, мне тоже это пригодилось.
Однако смущает, что такая распространённая операция как преобразование числа в текст с усечением нулей решается сравнительно громоздким способом. Ожидал, что существует более изящное решение, чем ручная замена символов.
3 окт 11, 09:40    [11371817]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация с усечением  [new]
iap
Member

Откуда: Москва
Сообщений: 47047
Lithium
Спасибо, мне тоже это пригодилось.
Однако смущает, что такая распространённая операция как преобразование числа в текст с усечением нулей решается сравнительно громоздким способом. Ожидал, что существует более изящное решение, чем ручная замена символов.
Вообще-то, серверу это не очень-то и надо.
Ему ведь негде рисовать результат.
А вот на клиенте... Но там ведь это не проблема, правда?
3 окт 11, 09:48    [11371850]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация с усечением  [new]
iljy
Member

Откуда:
Сообщений: 8711
Lithium
Спасибо, мне тоже это пригодилось.
Однако смущает, что такая распространённая операция как преобразование числа в текст с усечением нулей решается сравнительно громоздким способом. Ожидал, что существует более изящное решение, чем ручная замена символов.

Форматированием вывода должен заниматься клиент, а не сервер.
3 окт 11, 09:56    [11371882]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Конвертация с усечением  [new]
Lithium
Member

Откуда: Волгодонск
Сообщений: 28
iljy
Форматированием вывода должен заниматься клиент, а не сервер.

Не всегда. У меня нередко случается, что форматирование нужно использовать в расчёте до вывода.

iap
Вообще-то, серверу это не очень-то и надо.
Ему ведь негде рисовать результат.
А вот на клиенте... Но там ведь это не проблема, правда?

Зачем тогда функции convert() столько параметров? Возможно, разработчики сервера считают, что серверу это надо?
А на клиенте бывает проблема. В моём случае - клиент не мой, а только использует мою процедуру.

Вопрос был только в том, есть ли штатные средства. Нет - ну ладно.
6 дек 12, 11:58    [13586852]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация с усечением  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Lithium,

нифига вы год думали чего ответить Илье?:))
6 дек 12, 12:10    [13586976]     Ответить | Цитировать Сообщить модератору
 Re: Конвертация с усечением  [new]
Lithium
Member

Откуда: Волгодонск
Сообщений: 28
WarAnt
Lithium,
нифига вы год думали чего ответить Илье?:))

сам в шоке)))

... шучу конечно. тогда вопрос был решён с помощью предложенного выше способа, и я просто не заходил в эту ветку.
6 дек 12, 13:39    [13587878]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить