powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разбить строку на подстроки
16 сообщений из 16, страница 1 из 1
Разбить строку на подстроки
    #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
Разбить строку на подстроки
    #40024449
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
butulec,

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

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

Имена полей причешите, а то поле в одном месте id, в другом vuid.
...
Рейтинг: 0 / 0
Разбить строку на подстроки
    #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
Разбить строку на подстроки
    #40024454
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
butulec,

А запятую поставить, не? В decode тоже причешите имя поля. Я в одном месте поменял, а потом менялка закончилась.
...
Рейтинг: 0 / 0
Разбить строку на подстроки
    #40024456
butulec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это работает)))
Спасибо тебе добрый человек
...
Рейтинг: 0 / 0
Разбить строку на подстроки
    #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
Разбить строку на подстроки
    #40024459
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

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

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

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

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

Не видя всего запроса можно предполагать всё, что угодно. Может на соединениях множиться.
...
Рейтинг: 0 / 0
Разбить строку на подстроки
    #40024468
butulec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Разбить строку на подстроки
    #40024469
butulec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разбивка идет по всем найденным позициям...и так на каждой итерации
Запросы одинаковые, я просто меняю длину строки 10/20 и если разбивка будет то идет дублирование по всем найденным...
...
Рейтинг: 0 / 0
Разбить строку на подстроки
    #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
Разбить строку на подстроки
    #40024472
butulec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
отлично, то что нужно))
СПАСИБО!
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разбить строку на подстроки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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