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

Откуда:
Сообщений: 6
Имеется такой запрос с информацией:

Иванов 20 лет
Горбатовский 20 лет
из поля student_lastname

как мне привести эти данные к такому виду:
Иванов 20 лет
Горбатовский 20 лет

ТО ЕСТЬ ДОБАВИТЬ К ФАМИЛИИ СТОЛЬКО ПРОБЕЛОВ СКОЛЬКО НЕ ХВАТАЕТ ДЛЯ ВЫРАВНИВАНИЯ!!!


ИСХОДНЫЕ ДАННЫЕ:
SELECT STUDENT_LASTNAME + CONVERT(VARCHAR(20), STUDENT_AGE)
FROM STUDENTS


Сообщение было отредактировано: 15 апр 14, 13:58
15 апр 14, 13:52    [15884881]     Ответить | Цитировать Сообщить модератору
 Re: Работа со строками! ПОМОГИТЕ!  [new]
Vladimir Em
Member

Откуда:
Сообщений: 6
Vladimir Em
СРАЗУ НЕ ЗАМЕТИЛ ЧТО ПРОБЕЛЫ УДАЛЯЮТСЯ:) ЗАМЕНИЛ ПРОБЕЛЫ ПУНКТИРАМИ!!!
как мне привести эти данные к такому виду:
Иванов------------20 лет
Горбатовский-----20 лет
ТО ЕСТЬ ДОБАВИТЬ К ФАМИЛИИ СТОЛЬКО ПРОБЕЛОВ СКОЛЬКО НЕ ХВАТАЕТ ДЛЯ ВЫРАВНИВАНИЯ!!!

15 апр 14, 13:57    [15884922]     Ответить | Цитировать Сообщить модератору
 Re: Работа со строками  [new]
Glory
Member

Откуда:
Сообщений: 104751
CONVERT(CHAR(50), STUDENT_LASTNAME)
15 апр 14, 14:01    [15884949]     Ответить | Цитировать Сообщить модератору
 Re: Работа со строками  [new]
Vladimir Em
Member

Откуда:
Сообщений: 6
Glory,
не совсем верно так как длины фаимлий разные и требуется разное количество добавочных проеблов!!!
15 апр 14, 14:04    [15884975]     Ответить | Цитировать Сообщить модератору
 Re: Работа со строками  [new]
Glory
Member

Откуда:
Сообщений: 104751
Vladimir Em
не совсем верно так как длины фаимлий разные

Вы хотите сказать, что под поле STUDENT_LASTNAME вы назначили тип varchar(max) и поэтому _максимальный_ размер фамилии студента может быть 2Гигабайта ?
15 апр 14, 14:06    [15884989]     Ответить | Цитировать Сообщить модератору
 Re: Работа со строками  [new]
Алексей Куренков
Member [заблокирован]

Откуда: Москва
Сообщений: 567
Vladimir Em
Glory,
не совсем верно так как длины фаимлий разные и требуется разное количество добавочных проеблов!!!


Улыбнуло )))). Вы для начала попробуйте то, что Вам предложили.
15 апр 14, 14:07    [15884995]     Ответить | Цитировать Сообщить модератору
 Re: Работа со строками  [new]
iap
Member

Откуда: Москва
Сообщений: 47083
Vladimir Em
Glory,
не совсем верно так как длины фаимлий разные и требуется разное количество добавочных проеблов!!!
И что не так?
15 апр 14, 14:07    [15884998]     Ответить | Цитировать Сообщить модератору
 Re: Работа со строками  [new]
TJ001
Member

Откуда: от верблюда
Сообщений: 428
автор,
поясни, как именно нужно?
самая_длинная_фамилия+один_пробел+"20 лет", а все остальные уже должны подгоняться под этот шаблон?
и откуда вообще берутся эти 20 лет?
15 апр 14, 14:22    [15885118]     Ответить | Цитировать Сообщить модератору
 Re: Работа со строками  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37225
Ширину, до которой выравнивать, требуется угадать? Или и правда до 2147483648 символов надо расширять?
15 апр 14, 14:26    [15885158]     Ответить | Цитировать Сообщить модератору
 Re: Работа со строками  [new]
Добрый Э - Эх
Guest
Vladimir Em,
--
-- Тестовый набор данных:
with
  STUDENTS(STUDENT_LASTNAME, STUDENT_AGE) as
    (
	  select *
	    from (
		       values
			     ('Иванов', 20),
				 ('Горбатовский', 21),
				 ('Христорождественский', 20)
		     )v(n,a)
	)
--
-- Основной запрос:
select s.*
     , STUDENT_LASTNAME + CONVERT(VARCHAR(20), STUDENT_AGE) + ' лет' as x_str_1
     , STUDENT_LASTNAME
	 + replicate(' ',max(len(STUDENT_LASTNAME)) over() + 1 - len(STUDENT_LASTNAME))
	 + CONVERT(VARCHAR(20), STUDENT_AGE) + ' лет' as x_str_2
  from STUDENTS s


  STUDENT_LASTNAME     STUDENT_AGE            X_STR_1                        X_STR_2
--------------------   -----------   ---------------------------   ---------------------------
Иванов                          20   Иванов 20 лет                 Иванов               20 лет
Горбатовский                    21   Горбатовский 21 лет           Горбатовский         21 лет
Христорождественский            20   Христорождественский 20 лет   Христорождественский 20 лет
16 апр 14, 06:11    [15888358]     Ответить | Цитировать Сообщить модератору
 Re: Работа со строками  [new]
west74
Member

Откуда: Челябинск
Сообщений: 76
declare @str varchar(50);
declare @t table
( 
 Name varchar(20),
 Age int
 )
 insert into @t (Name,Age) values
 ('Иванов',20),('Петров',21),('Сидоров',20),('Васильев',20);

set @str=REPLICATE(' ',50);

select Stuff(right(@str+CONVERT(VARCHAR(10), Age)+' лет',50),1,LEN(nAME),name)  x_str

from @t
------------------------------------------------------------------

Иванов                                      20 лет
Петров                                      21 лет
Сидоров                                     20 лет
Васильев                                    20 лет


Сообщение было отредактировано: 16 апр 14, 12:53
16 апр 14, 07:51    [15888436]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить