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

Откуда:
Сообщений: 9
Прошу помочь выровнять результаты SQL запроса по правому краю.
В результате запроса данные выходят в таком виде:
1345.23
23.00
343243.23
9092037283.25
Нужно упорядочить таким образом, чтобы дробные под дробными, единицы под единицами, десятки под десятками и т.д

Спасибо
17 сен 19, 16:47    [21972705]     Ответить | Цитировать Сообщить модератору
 Re: Выравнивание по правому краю  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
botan131,

непонятно в каком " таком виде", но добавить нулями и вперёд
17 сен 19, 16:50    [21972707]     Ответить | Цитировать Сообщить модератору
 Re: Выравнивание по правому краю  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20538
Попросите средство ОТОБРАЖЕНИЯ выравнивать этот столбец по правому краю.
17 сен 19, 16:53    [21972710]     Ответить | Цитировать Сообщить модератору
 Re: Выравнивание по правому краю  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20538
В крайнем случае

SELECT RIGHT(CONCAT(REPLICATE(CHAR(32), 20), STR(field)), 20), ...


20 символов, есссно, от фонаря.
17 сен 19, 16:56    [21972714]     Ответить | Цитировать Сообщить модератору
 Re: Выравнивание по правому краю  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Akina
В крайнем случае

SELECT RIGHT(CONCAT(REPLICATE(CHAR(32), 20), STR(field)), 20), ...


20 символов, есссно, от фонаря.

А потом вспоминаем, что шрифт у нас не моноширинный, расстраиваемся, и бросаем эту затею.
17 сен 19, 17:29    [21972742]     Ответить | Цитировать Сообщить модератору
 Re: Выравнивание по правому краю  [new]
botan131
Member

Откуда:
Сообщений: 9
Minamoto,
к сожалению Вы правы. Этот способ создает кривизну другого рода.
17 сен 19, 17:36    [21972750]     Ответить | Цитировать Сообщить модератору
 Re: Выравнивание по правому краю  [new]
botan131
Member

Откуда:
Сообщений: 9
Akina,
Средство отображения - программа SQL Client под Андроидом, она не позволяет манипулировать результатами.
17 сен 19, 17:38    [21972752]     Ответить | Цитировать Сообщить модератору
 Re: Выравнивание по правому краю  [new]
Konst_One
Member

Откуда:
Сообщений: 11522
бред конечно, но вот так можно:

declare @t table (data decimal(16,2));
insert into @t(data)
values (1345.23), (23.00), (343243.23), (9092037283.25);

select RIGHT(REPLICATE('_', 20) + convert(varchar(20), t.data), 20) as summa from @t t
17 сен 19, 17:46    [21972770]     Ответить | Цитировать Сообщить модератору
 Re: Выравнивание по правому краю  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
botan131
Akina,
Средство отображения - программа SQL Client под Андроидом, она не позволяет манипулировать результатами.

Собственно, это ответ на ваш вопрос. Не имея доступа к управлению отображением, вы не можете гарантировать отображение.
Для ваших целей нужно изменение именно на уровне отображения - в идеальном варианте - полный доступ и реализация нужного вида, в усеченном - хотя бы моноширинный шрифт, который позволяет обеспечить одинаковую ширину символов.

Все остальное - дикие костыли, можете попробовать подсчитать ширину каждого имеющегося у вас символа при отображении и "добивать" неотображаемыми символами, пробелами, например, до нужной ширины. Но это будет работать на вашем конкретном устройстве, т.е. это абсолютно неуниверсальное решение.
17 сен 19, 17:50    [21972775]     Ответить | Цитировать Сообщить модератору
 Re: Выравнивание по правому краю  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Konst_One
бред конечно, но вот так можно:

declare @t table (data decimal(16,2));
insert into @t(data)
values (1345.23), (23.00), (343243.23), (9092037283.25);

select RIGHT(REPLICATE('_', 20) + convert(varchar(20), t.data), 20) as summa from @t t

Тогда уж так:
select REPLICATE('  ', MAX(LEN(data)) OVER ()-LEN(CAST(data AS varchar(max)))) + convert(varchar(max), t.data) as summa from @t t


Сработает для студии, т.к. там размер пробела ровно в 2 раза меньше числа, а размер чисел не отличается. Но сработает ли для приложения ТС - большой вопрос.
17 сен 19, 18:05    [21972792]     Ответить | Цитировать Сообщить модератору
 Re: Выравнивание по правому краю  [new]
botan131
Member

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

спасибо. В таком виде работает.
17 сен 19, 18:26    [21972810]     Ответить | Цитировать Сообщить модератору
 Re: Выравнивание по правому краю  [new]
PsyMisha
Member

Откуда: другая столица
Сообщений: 769
botan131,

Ужс какой-то! А потом недоумеваем, почему у нас приложение так отжирает ресурсы у телефона и вообще все лагает и глючит!
18 сен 19, 16:21    [21973383]     Ответить | Цитировать Сообщить модератору
 Re: Выравнивание по правому краю  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
PsyMisha
botan131,

Ужс какой-то! А потом недоумеваем, почему у нас приложение так отжирает ресурсы у телефона и вообще все лагает и глючит!

да! особенно когда это на серевреной части!
18 сен 19, 16:23    [21973384]     Ответить | Цитировать Сообщить модератору
 Re: Выравнивание по правому краю  [new]
AndrF
Member

Откуда:
Сообщений: 2194
Сервер не должен заниматься отображением. Совсем. Это дело клиентской программы.
18 сен 19, 17:33    [21973466]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить