Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разбить строку на подстроки / 16 сообщений из 16, страница 1 из 1
04.12.2020, 08:51
    #40024446
butulec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить строку на подстроки
Здравствуйте!
Подскажите пожалуйста, как разбить строку на подстроки

вот мой вариант

Код: plsql
1.
2.
3.
4.
5.
6.
WITH adcc as ( 
    SELECT ID,SHOWME str FROM table WHERE table.ID='{77C5252C-D4E0-4531-A163-3A3CB27DDC02}'
) 
SELECT VUID,substr(str,(level-1)*20+1,20) 
FROM adcc 
CONNECT BY substr(str,(level-1)*20+1,20) IS NOT null;



он разбивает 2 столбец SHOWME но также в каждой строке есть и первый столбец ID

Как сделать так чтобы первый столбец ID выводился только на первой разбивочной строке, а на остальных было пусто
Спасибо!
...
Рейтинг: 0 / 0
04.12.2020, 09:20
    #40024449
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить строку на подстроки
butulec,

Код: plsql
1.
 decode(row_number() over (partition by vuid order by level), 1, id)
...
Рейтинг: 0 / 0
04.12.2020, 09:24
    #40024451
butulec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить строку на подстроки
env,
можете подсказать в какое место это вставить ? :D
...
Рейтинг: 0 / 0
04.12.2020, 09:29
    #40024452
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить строку на подстроки
butulec,

После select в итоговой выборке.

Имена полей причешите, а то поле в одном месте id, в другом vuid.
...
Рейтинг: 0 / 0
04.12.2020, 09:36
    #40024453
butulec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить строку на подстроки
env
butulec,

После select в итоговой выборке.

Имена полей причешите, а то поле в одном месте id, в другом vuid.


Код: plsql
1.
2.
3.
4.
5.
6.
7.
WITH adcc as ( 
    SELECT VUID,SHOWME str FROM table WHERE table.VUID='{EC3C179B-6071-436A-A73F-88513658F900}'
) 
SELECT vuid,substr(str,(level-1)*20+1,20)
decode(row_number() over (partition by vuid order by level), 1, vuid)
FROM adcc
CONNECT BY substr(str,(level-1)*20+1,20) IS NOT null;



ORA-00923: ключевое слово FROM не найдено там, где оно ожидалось
00923. 00000 - "FROM keyword not found where expected"
...
Рейтинг: 0 / 0
04.12.2020, 09:37
    #40024454
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить строку на подстроки
butulec,

А запятую поставить, не? В decode тоже причешите имя поля. Я в одном месте поменял, а потом менялка закончилась.
...
Рейтинг: 0 / 0
04.12.2020, 09:38
    #40024456
butulec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить строку на подстроки
это работает)))
Спасибо тебе добрый человек
...
Рейтинг: 0 / 0
04.12.2020, 09:39
    #40024457
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить строку на подстроки
butulec,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SQL> ed
Wrote file afiedt.buf

  1  with tab(id ,SHOWME) as
  2  (select '{77C5252C-D4E0-4531-A163-3A3CB27DDC02}',
  3  'Как сделать так чтобы первый столбец ID выводился только на первой разбивочной строке' from dual)
  4  ,adcc as (
  5      SELECT ID vuid,SHOWME str FROM tab WHERE tab.ID='{77C5252C-D4E0-4531-A163-3A3CB27DDC02}'
  6  )
  7  SELECT decode(level,1,VUID) vuid,substr(str,(level-1)*20+1,20)
  8  FROM adcc
  9* CONNECT BY substr(str,(level-1)*20+1,20) IS NOT null
SQL> /

VUID                                   SUBSTR(STR,(LEVEL-1)
-------------------------------------- --------------------
{77C5252C-D4E0-4531-A163-3A3CB27DDC02} Как сделать так чтоб
                                       ы первый столбец ID
                                       выводился только на
                                       первой разбивочной с
                                       троке




.....
stax
...
Рейтинг: 0 / 0
04.12.2020, 09:50
    #40024459
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить строку на подстроки
Stax,

Да, можно и так, row_number универсальнее в общем случае.
...
Рейтинг: 0 / 0
04.12.2020, 09:53
    #40024461
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить строку на подстроки
env
Stax,

Да, можно и так, row_number универсальнее в общем случае.

чем в даном примере?
зачем еще раз сортировать?

.....
stax
...
Рейтинг: 0 / 0
04.12.2020, 10:09
    #40024465
butulec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить строку на подстроки
у меня на простом варианте получилось, начал разбираться дальше не пойму почему так получается)
почему он разбивает по 4 строки, там где уже вроде не нужно разбивать?
Дублируется рольная)
...
Рейтинг: 0 / 0
04.12.2020, 10:12
    #40024467
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить строку на подстроки
butulec,

Не видя всего запроса можно предполагать всё, что угодно. Может на соединениях множиться.
...
Рейтинг: 0 / 0
04.12.2020, 10:15
    #40024468
butulec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить строку на подстроки
...
Рейтинг: 0 / 0
04.12.2020, 10:16
    #40024469
butulec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить строку на подстроки
Разбивка идет по всем найденным позициям...и так на каждой итерации
Запросы одинаковые, я просто меняю длину строки 10/20 и если разбивка будет то идет дублирование по всем найденным...
...
Рейтинг: 0 / 0
04.12.2020, 10:22
    #40024471
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить строку на подстроки
butulec
начал разбираться дальше не пойму почему так получается)
почему он разбивает по 4 строки, там где уже вроде не нужно разбивать?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
SQL> ed
Wrote file afiedt.buf

  1  with tab(id ,SHOWME) as
  2  (select '{77C5252C-D4E0-4531-A163-3A3CB27DDC02}',
  3  'Как сделать так чтобы первый столбец ID выводился только на первой разбивочной строке' from dual
  4  union all
  5  select '{77C5252C-D4E0-4531-A163-3A3CB27DDC03}',
  6  'начал разбираться дальше не пойму почему так получается' from dual
  7  )
  8  ,adcc as (
  9      SELECT ID vuid,SHOWME str FROM tab --WHERE tab.ID='{77C5252C-D4E0-4531-A163-3A3CB27DDC02}'
 10  )
 11  SELECT decode(level,1,VUID) vuid,substr(str,(level-1)*20+1,20)
 12  FROM adcc
 13  CONNECT BY
 14    VUID=prior VUID
 15    and prior SYS_GUID() is NOT null /* dbms_random */
 16*   and substr(str,(level-1)*20+1,20) IS NOT null
SQL> /

VUID                                   SUBSTR(STR,(LEVEL-1)
-------------------------------------- --------------------
{77C5252C-D4E0-4531-A163-3A3CB27DDC02} Как сделать так чтоб
                                       ы первый столбец ID
                                       выводился только на
                                       первой разбивочной с
                                       троке
{77C5252C-D4E0-4531-A163-3A3CB27DDC03} начал разбираться да
                                       льше не пойму почему
                                        так получается

8 rows selected.

SQL



.....
stax
...
Рейтинг: 0 / 0
04.12.2020, 10:25
    #40024472
butulec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбить строку на подстроки
отлично, то что нужно))
СПАСИБО!
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разбить строку на подстроки / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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