powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Разделение на колонки в запросе
5 сообщений из 5, страница 1 из 1
Разделение на колонки в запросе
    #37126062
Артем Г
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! :). Нуждаюсь в вашей помощи с запросом. Задача: есть таблица STH_PAYMENT, а в нем всего одно поле PAY_INSURER_NAME. Записи в этой таблице хранятся так:
PAY_INSURER_NAMEФамилия Имя Отчество
т.е. например:
PAY_INSURER_NAMEИванов Иван Иванович
нужно разделить в запросе данную таблицу на 3 колонки, чтобы фамилии, имена и отчества заносились в отдельные колонки. Все, что мне пока удалось сделать это такой запрос:
Код: plaintext
1.
2.
3.
SELECT DISTINCT (STH_PAYMENT.PAY_INSURER_NAME)  AS  F, 
                         (STH_PAYMENT.PAY_INSURER_NAME)  AS  N, 
                         (STH_PAYMENT.PAY_INSURER_NAME)  AS  O
FROM PU.STH_PAYMENT  AS  STH_PAYMENT 
в результате которого получается такая таблица:
F N OФамилия Имя Отчество Фамилия Имя Отчество Фамилия Имя Отчество
т.е. часть задания я вроде сделал :). Но, нужно еще как-то сделать разделение значений в поле PAY_INSURER_NAME по раздельным колонкам F,N,O.
Есть предположения, что надо как-то использовать Substr и Locate, но не могу додуматься как задать условие "выбрать запись, до пробела". Может ли кто-нибудь помочь мне завершить запрос? Заранее спасибо.
Результатом правильного запроса должна быть таблица такого вида:
F N OФамилия Имя Отчество
...
Рейтинг: 0 / 0
Разделение на колонки в запросе
    #37126327
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Разделение на колонки в запросе
    #37126330
Артем Г
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Victor Metelitsa,

то, что ссылку-то дали на возможно полезную книжку спс, но хоть бы страницу чтоль примерно указали на какой читать. Не буду же я сначала читать ее.
...
Рейтинг: 0 / 0
Разделение на колонки в запросе
    #37127535
with
t_fio1 (fio) as
(values('ИВАНОВ ИВАН ИВАНОВИЧ')),
t_fio2 (fname, fio) as
(select substr(fio, 1, posstr(fio, ' ')), substr(fio, posstr(fio, ' ')+1, length(fio)-posstr(fio, ' ') ) from t_fio1),
t_fio3 (fname, sname, mname) as
(select fname, substr(fio, 1, posstr(fio, ' ')), substr(fio, posstr(fio, ' ')+1, length(fio)-posstr(fio, ' ') ) from t_fio2)
select * from t_fio3

только туфта все это.
фамилии могут быть составными без дефиса,
равно как и отчества (типа "Абдул Оглы")
...
Рейтинг: 0 / 0
Разделение на колонки в запросе
    #37127578
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Артем Г,

Добрый день.

Если версия 9.1 или выше:
Код: plaintext
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.
create function regexp_tokenize(
  source varchar( 4000 )
, pattern varchar( 128 )
, element int
)
deterministic
contains sql
no external action
returns varchar( 4000 )
return xmlcast(
xmlquery('fn:tokenize($s, $p)[$e]' passing 
  source as "s"
, pattern as "p"
, element as "e"
)
as varchar( 4000 ));

select 
  name
, char(regexp_tokenize(name, '\s+',  1 ),  20 ) last_name
, char(regexp_tokenize(name, '\s+',  2 ),  20 ) first_name
, char(regexp_tokenize(name, '\s+',  3 ),  20 ) surname
from table(values 
  'Фамилия   Имя    Отчество'
, 'Фамилия  Имя'
) t(name);
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Разделение на колонки в запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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