Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос массив в Select / 18 сообщений из 18, страница 1 из 1
05.06.2018, 09:12
    #39655348
Kadekin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос массив в Select
Добрый день.
Возникла задача. нужно в запросе Select вывести определенные значения через запятую. Т.е.
Я пытался сделать так
Код: sql
1.
2.
3.
Select *
From LIB$SKLAD
Where LIB$PARTI in (Spisok.txt)


Spisok.txt - тут через запятую перечислены значения в формате
1463-2-1
,1421-0-1
,1536-0-1
Эти значения меняются и количество их разное
Запрос который я привел не выводит данные.
...
Рейтинг: 0 / 0
05.06.2018, 10:23
    #39655394
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос массив в Select
СУБД какая?
...
Рейтинг: 0 / 0
05.06.2018, 10:23
    #39655395
Kadekin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос массив в Select
miksoft,

Добрый день. База Fierbierd 2.5

Модератор: Тема перенесена из форума "Другие СУБД".
...
Рейтинг: 0 / 0
05.06.2018, 10:46
    #39655404
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос массив в Select
Kadekin,

Давай DDL. Может в значениях Spisok.txt нужно кавычки ставить. На первый взгляд это не числа, а строки.
...
Рейтинг: 0 / 0
05.06.2018, 10:50
    #39655406
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос массив в Select
KreatorXXI,

ему нужна процедура split. Где-то была здесь такая
...
Рейтинг: 0 / 0
05.06.2018, 10:59
    #39655413
Kadekin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос массив в Select
Симонов Денис,
В таблице SKLAD в ней есть поле "LIB$PARTI" Там внесены значения String, 8 символов.
такого формата 1922-0-1, 1254-0-1 и т.д.

И есть Memo в котором есть значения заполненные в таком формате
1463-2-1
,1421-0-1
,1536-0-1
количество может меняться.

Мне нужно сделать выборку в таблице SKLAD по номерам которые есть в MEMO.
...
Рейтинг: 0 / 0
05.06.2018, 11:02
    #39655414
Kadekin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос массив в Select
Симонов Денис,
На сколько я понимая, "процедура split" - разбор строки.
...
Рейтинг: 0 / 0
05.06.2018, 11:07
    #39655418
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос массив в Select
KadekinДобрый день.
Возникла задача. нужно в запросе Select вывести определенные значения через запятую. Т.е.
Я пытался сделать так
Код: sql
1.
2.
3.
Select *
From LIB$SKLAD
Where LIB$PARTI in (Spisok.txt)



Spisok.txt - тут через запятую перечислены значения в формате
1463-2-1
,1421-0-1
,1536-0-1
Эти значения меняются и количество их разное
Запрос который я привел не выводит данные.
Ну если в лоб то как-то вот так
Код: sql
1.
2.
3.
Select *
From LIB$SKLAD
Where :Spisok containing LIB$PARTI


однако это не есть хорошо
...
Рейтинг: 0 / 0
05.06.2018, 11:16
    #39655422
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос массив в Select
Kadekin,

именно. Ищи в этом форуме (STRTOROWS, SPLIT ну и подобное).
...
Рейтинг: 0 / 0
05.06.2018, 12:01
    #39655466
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос массив в Select
Например 6686267
...
Рейтинг: 0 / 0
05.06.2018, 12:07
    #39655481
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос массив в Select
KadekinВ таблице SKLAD в ней есть поле "LIB$PARTI" Там внесены значения String, 8 символов.

Уточни: значени Я или значени Е ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.06.2018, 12:54
    #39655525
AltHasp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос массив в Select
Kadekin,

1) Загнать эти значения в таблицу, затем join с этой таблицей.
2) Отправить строку с запятыми на вход ХП, а там составить запрос расшепив на элементы.
3) На клиенте собирать в цикле для where 1=1 ... or LIB$PARTI contаining :VAR.
...
Рейтинг: 0 / 0
05.06.2018, 13:04
    #39655532
Kadekin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос массив в Select
AltHasp,

Где то допустил ошибку
Данные поступают
1427-0-1
, 1431-1-1
, 0071-0-0
,
Сам запрос
Код: sql
1.
2.
3.
select LIB$PARTI, LIB$Sost
from LIB$SKLAD
where LIB$PARTI in (select LIB$PARTI from usr$split(:ids))



Сама процедура
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create procedure USR$SPLIT ( IDS varchar(1024))
returns ( ID varchar(1024))
as
declare variable I integer;
declare variable J integer = 1;
BEGIN
while (j < char_length(ids)) do
 begin
 i = position(',',:ids,j);
 id = substring(:ids from j for i-j);
 j = i+1;
 SUSPEND;
 end
END


При срабатывании - выводит почти всю базу .... а не те данные которые были переданы в процедуру.
...
Рейтинг: 0 / 0
05.06.2018, 13:27
    #39655554
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос массив в Select
KadekinГде то допустил ошибку

Да в общем-то практически везде, начиная с постановки задачи. Процедура кривая, запрос
кривой, задача гораздо проще решается на клиенте.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.06.2018, 13:38
    #39655566
Kadekin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос массив в Select
Dimitry Sibiryakov,

Ошибку нашел...
Дмитрий, в какую сторону капать??
...
Рейтинг: 0 / 0
05.06.2018, 13:39
    #39655568
Kadekin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос массив в Select
Kadekin,
Данные которые я буру для скрипта.. они находятся в Планнере.
...
Рейтинг: 0 / 0
05.06.2018, 13:43
    #39655571
Kadekin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос массив в Select
Kadekin,
И данные имею в планнере больше т.е. (1472-1-1_(350)) меня интересует значения до "_" или 8 символов т.к. вторая строка там записана (,1482-1-0_(0,52))
...
Рейтинг: 0 / 0
05.06.2018, 14:09
    #39655596
NickDee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос массив в Select
А можно вот так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
execute block returns (id integer, name varchar(128))
as
  declare procedure T returns (Id integer) as
  begin
    id = 1;
    suspend;
    id = 2;
    suspend;
  end

begin
  for select Rdb$Relations.* from T
  inner join Rdb$Relations on (Rdb$Relations.Rdb$Relation_Id = T.Id)
  as cursor C do
  begin
    :id = C.Rdb$Relation_Id;
    :name = C.Rdb$Relation_name;
    suspend;
  end
end


Процедуру T только написать правильно.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос массив в Select / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]