Объединение строк в одну в SQL


8 0

В SQL Server почему-то народ часто сталкивается с проблемой объединения значений нескольких строк в одну. Например, допустим, что есть запрос:

SELECT ColumnName
FROM TableName

Допустим, что запрос возвращает три строки:

 Иванов
 Петров
 Сидоров

А теперь допустим, что ты хочешь вывести результат не в виде трех строк, а в виде одной строки. И еще хуже, в виде одной колонки, да еще и связать с результатом другого запроса. Самый простейший вариант - написать хранимую процедуру, которая будет читать данные с помощью курсора, объединять их в одну переменную и возвращать результат в виде varchar значения. Простое решение, но не единственное. Иногда просто нельзя писать процедуру.

Если не хочешь писать процедур, SQL Serer позволяет обойтись простым запросом SELECT, просто нужно схитрить с помощью конструкции FOR XML PATH:

SELECT  ColumnName + ' ' AS [text()]
FROM    TableName
FOR XML PATH ('')

Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым


Комментарии

ronin

14 Июня 2011

в Mysql пользуюсь group_concat, очень удобная и довольно таки шустрая функция


Владимир (Гаврилов)

14 Июня 2011

Во как! Странно почему не предусмотрели какой-нибудь GROUP_CONCAT()


Алексей

14 Июня 2011

Михаил...немного не в тему,но вот на днях "вскрыли" БД сената США...я сразу вспомнил раздел в Web-сервер глазами хакера...Вы удивлены действиями lulzsec? ))

И вообще как вы прокомментируете их деятельность?


Михаил Фленов

14 Июня 2011

Это их право и их выбор. Я не поддерживаю подобных действий.


Войтов Евгений

16 Октября 2011

А я правильно понял что в бд хранятся не структурированные данные? А чего же так?


Михаил Фленов

16 Октября 2011

почему не структурированные?


mh-coder

07 Октября 2013

Чёза бред, вы хоть сами пробовали свой запрос прежде чем предлогать?
а нечё что в ответе мы получим You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS [text()]

?


Михаил Фленов

07 Октября 2013

а "нечё" что в заметке говориться про SQL Server, а не MySQL?


Добавить Комментарий

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне