powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Чем заменить такое?
14 сообщений из 14, страница 1 из 1
Чем заменить такое?
    #39631527
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL Server-ное

@tab ?
[master]..[spt_values] - ?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 DECLARE @tab table
    (
        [Char] nchar(1),
        [Pos] int
    );
 DECLARE @string nvarchar(max)

    INSERT @tab ([Char], [Pos] )
    SELECT SUBSTRING(@string, [Number], 1)
         , [Number]
      FROM [master]..[spt_values]
     WHERE ([Type] = 'p')
      AND (SUBSTRING(@string, Number, 1) IN ('{', '}'));
...
Рейтинг: 0 / 0
Чем заменить такое?
    #39631536
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

Тут надо нормальным русским языком описать чего там происходит в этом коде для начала.
...
Рейтинг: 0 / 0
Чем заменить такое?
    #39631709
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim BogukРолг Хупин,

Тут надо нормальным русским языком описать чего там происходит в этом коде для начала.

на вход строка, в которой всякая фигня, пересыпанная скобками {,}
после обработки таблица содерэит записи типа

21 {
32 }
38 {
127 {
...

т.е. позиции скобок в тексте.

Не хотелось бы городить временну таблицу, но дальше надо будет удалять некоторые записи и в цикле идти по позициям скобок
...
Рейтинг: 0 / 0
Чем заменить такое?
    #39631750
blonduser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупинна вход строка, в которой всякая фигня, пересыпанная скобками {,}
после обработки таблица содерэит записи типа

21 {
32 }
38 {
127 {
...

т.е. позиции скобок в тексте.

Не хотелось бы городить временну таблицу, но дальше надо будет удалять некоторые записи и в цикле идти по позициям скобок

"Всякая фигня..." - это случайно не JSON?
...
Рейтинг: 0 / 0
Чем заменить такое?
    #39631751
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинSQL Server-ное

[master]..[spt_values] - ?
generate_series
...
Рейтинг: 0 / 0
Чем заменить такое?
    #39631754
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинSQL Server-ное

@tab ?отвыкайте от порочной практики... пишите всё без временных таблиц. CTE на худой конец. сервер в этом случае сам сделает временную таблицу на период активности вашего запроса.
...
Рейтинг: 0 / 0
Чем заменить такое?
    #39631775
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blonduserРолг Хупинна вход строка, в которой всякая фигня, пересыпанная скобками {,}
после обработки таблица содерэит записи типа

21 {
32 }
38 {
127 {
...

т.е. позиции скобок в тексте.

Не хотелось бы городить временну таблицу, но дальше надо будет удалять некоторые записи и в цикле идти по позициям скобок

"Всякая фигня..." - это случайно не JSON?

не, это фактически содержимое rtf файла
...
Рейтинг: 0 / 0
Чем заменить такое?
    #39631854
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

Код: sql
1.
2.
select * from unnest(string_to_array('foo{ - }bar abuyz dczrfz fdg{dfg67568797oryhtnP{}}{',null))with ordinality u (t,ord)
where t in('{','}')



но парсер "тегов" надо строить в пж на регулярках. к тому же у вас 1 тип "скобок" я как то все типы ми кавычки с елочками парсил. и лифо и фифо -- всё через регулярки.
...
Рейтинг: 0 / 0
Чем заменить такое?
    #39632290
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqРолг Хупин,

Код: sql
1.
2.
select * from unnest(string_to_array('foo{ - }bar abuyz dczrfz fdg{dfg67568797oryhtnP{}}{',null))with ordinality u (t,ord)
where t in('{','}')



но парсер "тегов" надо строить в пж на регулярках. к тому же у вас 1 тип "скобок" я как то все типы ми кавычки с елочками парсил. и лифо и фифо -- всё через регулярки.

Как с этим быть?
Имеется в виду: здесь используется удаление и апдейт в цикле.
Чем заменить в plpgsql такой подход?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
WHILE (1 = 1)
        BEGIN
            SELECT TOP 1 @Pos1 = s1.[Pos] , @Pos2 = s2.[Pos]
              FROM @tab s1
                INNER JOIN @tab s2 ON s2.[Pos] > s1.[Pos]
             WHERE (s1.[Char] = N'{')
               AND (s2.[Char] = N'}')
            ORDER BY s2.[Pos] - s1.[Pos];

            IF @@ROWCOUNT = 0
                BREAK

            DELETE
              FROM @tab
             WHERE ([Pos] IN (@Pos1, @Pos2));

            UPDATE @tab
               SET [Pos] = [Pos] - @Pos2 + @Pos1 - 1
             WHERE ([Pos] > @Pos2);

            SET @string = STUFF(@string, @Pos1, @Pos2 - @Pos1 + 1, '');
        END
...
Рейтинг: 0 / 0
Чем заменить такое?
    #39632407
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

ты этта, не мудри, ты пальцем покажы

читать Т-скл через 20 лет -- дураков нет
...
Рейтинг: 0 / 0
Чем заменить такое?
    #39632411
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqРолг Хупин,

ты этта, не мудри, ты пальцем покажы

читать Т-скл через 20 лет -- дураков нет

уже немного проще, я начал с массивами мутить.

Как объявить массив, в котором char int, т.е., чтобы запbхнуть туда результат:

Код: sql
1.
2.
select * from unnest(string_to_array(parameter_string,null)) 
with ordinality u (sym,pos) where sym in('{','}')


и чтобы потом можно было удалять елементы и изменять pos
...
Рейтинг: 0 / 0
Чем заменить такое?
    #39632435
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

пить надо как-то много меньше. читать больше.

и сдается что-то вот из этого нужно дону хулию. с вариациями на тему
Код: sql
1.
2.
3.
--------------
SELECT	regexp_replace ('foo{ -{ }bar abuyz dczrfz fdg{dfg67568797oryhtnP{fdgfdgdfgdfg}123}dgdfgfd{' ,'\{[^\{\}]+\}' ,'<-#->' ,'ig')
	,regexp_replace ('foo{ -{ }bar abuyz dczrfz fdg{dfg67568797oryhtnP{fdgfdgdfgdfg}123}dgdfgfd{' ,'\{[^\}]+\}' ,'<-#->' ,'ig')
...
Рейтинг: 0 / 0
Чем заменить такое?
    #39632453
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
with recursive t(s  ) as (values('foo{ -{ }bar abuyz dczrfz fdg{dfg675687{97oryhtnP{fdgf{[}]dgdfgdfg}123}dgdf{}}gfd{'))
--------------
,r as (SELECT	regexp_replace (s ,'\{[^\{\}]*\}' ,'<-#->' ,'ig') s ,0 n from t
	union all
	SELECT	regexp_replace (s ,'\{[^\{\}]+\}' ,'<-#->' ,'ig') s, n+1 from r 
	where regexp_replace (s ,'\{[^\{\}]+\}' ,'<-#->' ,'ig')<> s
	)
SELECT * FROM r order by n desc limit 1


или вариации на эту

Ы?
...
Рейтинг: 0 / 0
Чем заменить такое?
    #39632499
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqРолг Хупин,

пить надо как-то много меньше. читать больше.

и сдается что-то вот из этого нужно дону хулию. с вариациями на тему
Код: sql
1.
2.
3.
--------------
SELECT	regexp_replace ('foo{ -{ }bar abuyz dczrfz fdg{dfg67568797oryhtnP{fdgfdgdfgdfg}123}dgdfgfd{' ,'\{[^\{\}]+\}' ,'<-#->' ,'ig')
	,regexp_replace ('foo{ -{ }bar abuyz dczrfz fdg{dfg67568797oryhtnP{fdgfdgdfgdfg}123}dgdfgfd{' ,'\{[^\}]+\}' ,'<-#->' ,'ig')



1. я не пью (ну, типа )
2. проверю, подходит или надо еще полировать, у ртф дурной формат, дальше там в цикле надо долбить
3. а всё-таки про массивы интересно не только в этой теме, это как один из вариантов замены темп таблиц, у меня их дофига
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Чем заменить такое?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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