Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.07.31;
Скачать: CL | DM;

Вниз

Как запросом или процедурой получить столбец в виде строки?   Найти похожие ветки 

 
Col2Row   (2009-12-25 22:25) [0]

Есть таблица, с некоторым полем:

Field1

В таблице 4 записи с 4-мя значениями поля Field1:

Value1
Value2
Value3
Value4

Нужно запросом или процедурой получить такую строчку:

Value1\Value2\Value3\Value4


 
12 ©   (2009-12-25 23:25) [1]

mssql 2000
select top 10 product from product
declare @p varchar(255)
set @p=""
select top 10 @p=@p+convert(varchar(10),product)+";" from product
select @p


 
Col2Row   (2009-12-25 23:34) [2]

Спасибо. Для Firebird"а бы...


 
Sergey13 ©   (2009-12-26 08:16) [3]

> Как запросом или процедурой

А почему не в клиенте? ИМХО самое простое.


 
Виталий Панасенко(дом)   (2009-12-26 10:13) [4]

LIST - стандартная для 2 функция


 
Col2Row   (2009-12-26 11:35) [5]

>А почему не в клиенте? ИМХО самое простое.

Результат на сервере нужен. Это - подзапрос.

>LIST - стандартная для 2 функция

Посмотрел. Слишком специфичная функция - только FB 2.1 и выше. У нас много FB 2.0.4.


 
Sergey13 ©   (2009-12-26 12:00) [6]

> [5] Col2Row   (26.12.09 11:35)

Ну так в цикле в процедуре читай да склеивай.


 
Col2Row   (2009-12-26 12:49) [7]

Возвращается почему-то null, псевдокод:


create or alter procedure  ()
returns (
   RESULT char(50))
as
declare variable DIVIDER char(1);
declare variable VALUES char(2);
declare variable TEMP char(50);
begin
 DIVIDER = "\";
 for select VALUE
     from TABLE
     into :VALUES
 do
 TEMP = TEMP || :DIVIDER || :VALUES;
 RESULT = TEMP;
 suspend;
end


Если написать так: "TEMP = :DIVIDER || :VALUES;", то возвращается разделитель + одно значение. Если suspend перенести в блок do - то возвращается столбец - разделитель + все значения поля. То есть - не работает TEMP = TEMP. Что-то я делаю не так, что - не знаю, а пример найти не могу.


 
Sergey13 ©   (2009-12-26 12:56) [8]

> [7] Col2Row   (26.12.09 12:49)

ну так TEMP то надо инициализировать чем то окромя NULL-а, прежде чем прибавлять к нему что то.


 
Col2Row   (2009-12-26 13:10) [9]

Спасибо, уже немного продвинулись :)

Добавил TEMP = ""; пишет - numeric overflow or string iruncaction.
Пишет даже на "TEMP = TEMP || :MODALITY_DIVIDER". То есть - не может сложить две переменные.


 
Col2Row   (2009-12-26 13:11) [10]

Сорри, на TEMP = TEMP || :DIVIDER, кусок кода пролез :)


 
Sergey13 ©   (2009-12-26 14:17) [11]

> [9] Col2Row   (26.12.09 13:10)
> Добавил TEMP = "

Ну добавь "бла-бла". Вернет нужное с "бла-бла"?


 
Col2Row   (2009-12-26 15:49) [12]

>Ну добавь "бла-бла". Вернет нужное с "бла-бла"?

Всё дало :) Сам додумался: TEMP = Trim(TEMP). Всем спасибо.


 
Col2Row   (2009-12-26 15:51) [13]

Поменял переменные на VARCHAR. Trim не нужен.


 
Col2Row   (2009-12-26 16:01) [14]

Как бы еще последнюю "\" убрать :) Попробовал в основном запросе - работает почти идеально :) Только в конце оставляет лишнее "\".


 
12 ©   (2009-12-27 11:23) [15]

if length(s) > 0 then setlength(s,length(s)-1)


 
sniknik ©   (2009-12-27 11:28) [16]

> if length(s) > 0 then setlength(s,length(s)-1)
FB уже паскаль код поддерживает? круто!


 
12 ©   (2009-12-27 12:26) [17]

нет конечно
очень болит голова
ну вы поняли смысл


 
Col2Row   (2009-12-27 23:47) [18]

>ну вы поняли смысл

Смысл я как бы знал :) Вот только как это на sql выразить...


 
Кщд   (2009-12-28 09:58) [19]

>Col2Row   (27.12.09 23:47) [18]
доку принципиально не читаем?
ibase.ru: substring
а коли уж делаете на psql, то кто мешает не дописывать разделитель после последней строки?



Страницы: 1 вся ветка

Текущий архив: 2011.07.31;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.008 c
3-1261769117
Col2Row
2009-12-25 22:25
2011.07.31
Как запросом или процедурой получить столбец в виде строки?


2-1303720303
MsFoxy
2011-04-25 12:31
2011.07.31
приложение в делфи на подобии 1с


11-1236071712
rvi
2009-03-03 12:15
2011.07.31
Запись в log


15-1302785404
И. Павел
2011-04-14 16:50
2011.07.31
Применение css только на часть HTML страницы


15-1302506523
DiamondShark
2011-04-11 11:22
2011.07.31
Modernization, innovation, vperde!