Как получить курсор из строки с разделителем? | |
---|---|
sphinx Сообщений: 31189 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Коллеги, можно ли извратиться и из курсора
подучить вида Id element 10 34 10 56 10 78 10 90 Цикл с aliens() не надо, так я тоже умею. ------------------ "Veni, vidi, vici!"(с) Исправлено 1 раз(а). Последнее : sphinx, 10.01.22 12:58 |
Re: Как получить курсор из строки с разделителем? | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
А надо через SELECT SQL штоле?
|
Re: Как получить курсор из строки с разделителем? | |
---|---|
Владимир Максимов Сообщений: 14100 Откуда: Москва Дата регистрации: 02.09.2000 |
GetWordNum(cc, NN, '-')
Но, в общем случае, если требуется анализ по фрагментам строки, то в таблице (или в подчиненной таблице) должны быть созданы поля, содержащие эти фрагменты. И заполнение этих фрагментов должно быть напрямую на форме пользователем. А итоговая строка с разделителями - это как раз результат сложения (вычисления) Проблема в том, что строковый анализ - это всегда сомнительная операция. Всегда есть шанс ошибиться |
Re: Как получить курсор из строки с разделителем? | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Вариантов обработки строки несколько, но, уверен, ты все из них знаешь. Так что конкретно тебя не устраивает в этом, зачем искать другой? |
Re: Как получить курсор из строки с разделителем? | |
---|---|
sphinx Сообщений: 31189 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Да вот пытаюсь придумать, как можно ускорить банальный alines() и с последующим перебором цикла и записью в новый курсор.
Хочется, чтобы было красиво и быстро, а-ля коррелиремый запрос, который формируется функцией типа array2cursor путём create cursor... from array. Но так не получается пока. ------------------ "Veni, vidi, vici!"(с) |
Re: Как получить курсор из строки с разделителем? | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Дороги пока тоже не везде одинаково хороши, однако и по ним приходится ездить. ;) |
Re: Как получить курсор из строки с разделителем? | |
---|---|
vnkor Автор Сообщений: 324 Дата регистрации: 04.10.2007 |
А такое решение:
|
Re: Как получить курсор из строки с разделителем? | |
---|---|
sphinx Сообщений: 31189 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Идея понятна, но вряд ли работа с файлом быстрее работы с массивом.
------------------ "Veni, vidi, vici!"(с) |
Re: Как получить курсор из строки с разделителем? | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Про "быстродействие" процедуры - не буду обсуждать (в малых обьемах исходных файлов это несущественно)
Про решение - без двухэтапного SELECT (не вложенного SELECT) невозможно, мтк. Т.е - получить выборку из GETWORDNUM(i) деталей второй колонки (получить тройку колонок (10, i, деталь_номера)) - превратить эту тройку колонок в желаемое, тем же SELECT |
Re: Как получить курсор из строки с разделителем? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Думаю что возможно (используя getwordnum в запросе и объединение с дополнительным курсором-болванкой на N "пронумерованных" записей), но скорее всего это будет абсолютно неэффективно. Это потребует многократного прохода по исходной таблице, вынимая лишь по 1 элементу за раз, ещё и "лишние" проходы, т.к. количество N придётся взять с запасом, чтобы сработало и в самом "крайнем" случае, когда это поле со списком заполнено под завязку односимвольными "элементами". Я бы сказал что оптимальнее всего в цикле по исходной таблице используя alines постепенно заполнять выходной курсор. ------------------ WBR, Igor |
Re: Как получить курсор из строки с разделителем? | |
---|---|
leonid Сообщений: 3204 Откуда: Рига Дата регистрации: 03.02.2006 |
А, теперь понятно, а то все не доходило, причем тут инопланетяне
|
Re: Как получить курсор из строки с разделителем? | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
alines - это aliеn(e)s ? ) это тривиально
() я тупанул, по пьяни Исправлено 1 раз(а). Последнее : of63, 12.01.22 00:17 |
Re: Как получить курсор из строки с разделителем? | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Оно несомненно будет среди лидеров в номинации "наиболее экзотическое решение". И чтобы оно не чувствовало себя одиноко, добавлю еще одно "по мотивам":
Исправлено 7 раз(а). Последнее : akvvohinc, 12.01.22 04:02 |
Re: Как получить курсор из строки с разделителем? | |
---|---|
sphinx Сообщений: 31189 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
T9 исправил, я правильно писал. ------------------ "Veni, vidi, vici!"(с) |
Re: Как получить курсор из строки с разделителем? | |
---|---|
vnkor Автор Сообщений: 324 Дата регистрации: 04.10.2007 |
Сделано именно так, как просил автор:
|
Re: Как получить курсор из строки с разделителем? | |
---|---|
sphinx Сообщений: 31189 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Придумал годное решение.
1) Сначала выбираем уникальные записи. 2) Создаём курсор с одним полем - для приёма элементов между разделителем. 3) Для каждой строки с разделителем: а) заменяем дефис на символ перевода строки б) сохраняем строку в файл (элементы уже в столбце!) в) APPEND FROM этот_файл TYPE SDF в курсор п.2 г) INSERT INTO tmp (str, element) SELECT string_with_defis, element FROM cursor 4) SELECT FROM table1 t1 LEFT JOIN tmp t2 ON t1.string_with_defis=t2.string_with_defis INTO TABLE t_result. Скорость почти в 2 раза. ------------------ "Veni, vidi, vici!"(с) |
Re: Как получить курсор из строки с разделителем? | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата: Больше, меньше? По сравнению с каким вариантом? Покажи тестовые коды - исходный и "придуманный годный". |
Re: Как получить курсор из строки с разделителем? | |
---|---|
sphinx Сообщений: 31189 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Быстрее.
А код будет, только выкупить из классов. Но раз интересно, то сделаем. Если под забуду/закручусь - напомни. Да, считать можно и без файлов, обычным циклом. Но остальное всё же неплохо, так думаю. ------------------ "Veni, vidi, vici!"(с) |
Re: Как получить курсор из строки с разделителем? | |
---|---|
sphinx Сообщений: 31189 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Серёг, приятно, что кому-то реально интересно. Поверь, у нас оптимизацию кода совсем не ценят, по сути я на добровольных началах, просто знаю, что можно сделать быстрее. Сюда данные всё не выложу по понятным причинам, но есть варианты ;) Это только часть формирования НСИ, но выкушу только то, о чем писал в начале темы.
------------------ "Veni, vidi, vici!"(с) |
Re: Как получить курсор из строки с разделителем? | |
---|---|
Burn Сообщений: 5644 Откуда: Днепр Дата регистрации: 02.01.2002 |
А обратную операцию средствами одного MSSQL 2016 можно проделать?
------------------ В борьбе бобра с козлом побеждает бобро |
© 2000-2024 Fox Club  |