powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / User defined functions
8 сообщений из 33, страница 2 из 2
User defined functions
    #33132611
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ggv
Ну))) ты от меня далеко... а тоб с удовольствием (шутка конешна)

Там есть 2 примера
Как сделать из нескольких строк одну и наоборот как из одной - много...
Там где рекурсивные запросы.
...
Рейтинг: 0 / 0
User defined functions
    #33132638
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
thanks, полез искать.
Да и Питер не так уж и далеко, может, и увидимся когда :)
...
Рейтинг: 0 / 0
User defined functions
    #33134327
ak@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ak@
Гость
Мне тоже нужно распарсить строку. Без использования Си. Либо в пользовательсой функции, либо в хранимой процедуре. Почитал эту ветку, прошелся по Кукбуку. В разделе Recursive SQL ничего по поводу разбиения / слияния строк не нашел. Дайте номер страницы/название главы, плз. Или (буде такое возможно!) дайте сырцы, если у кого есть.

Спасибо.
...
Рейтинг: 0 / 0
User defined functions
    #33134337
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Без использования Си

тут пока эта тема длится на С функцию уже можно было 100 раз написать, причем под все платформы, где есть db2.
...
Рейтинг: 0 / 0
User defined functions
    #33134393
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кукбук->Fun with SQL->Normalize Denormalized Data
Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
WITH
  temp1 (id, data) AS
    (VALUES ( 01 ,'SOME TEXT TO PARSE.')
    ,( 02 ,'MORE SAMPLE TEXT.')
    ,( 03 ,'ONE-WORD.')
    ,( 04 ,'')
  ),
  temp2 (id, word#, word, data_left) AS
    (SELECT id
      ,SMALLINT( 1 )
      ,SUBSTR(data, 1 ,
      CASE LOCATE(' ',data)
        WHEN  0  THEN LENGTH(data)
        ELSE LOCATE(' ',data)
      END)
      ,LTRIM(SUBSTR(data,
      CASE LOCATE(' ',data)
        WHEN  0  THEN LENGTH(data) +  1 
        ELSE LOCATE(' ',data)
      END))
    FROM temp1
    WHERE data <> ''
    UNION ALL
    SELECT id
      ,word# +  1 
      ,SUBSTR(data_left, 1 ,
      CASE LOCATE(' ',data_left)
        WHEN  0  THEN LENGTH(data_left)
        ELSE LOCATE(' ',data_left)
      END)
      ,LTRIM(SUBSTR(data_left,
        CASE LOCATE(' ',data_left)
          WHEN  0  THEN LENGTH(data_left) +  1 
          ELSE LOCATE(' ',data_left)
        END))
      FROM temp2
      WHERE data_left <> ''
    )
SELECT *
FROM temp2
ORDER BY  1 , 2 ;
...
Рейтинг: 0 / 0
User defined functions
    #33134394
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я помню, он неправильно определяет границы слов, ...но разберётесь...
...
Рейтинг: 0 / 0
User defined functions
    #33134426
ak@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ak@
Гость
Виктор, огромное спасибо! Работает.

To New Year: Сударь, при всем моем к Вам уважении, хочу заметить, что если не можете помочь, не засоряйте ветку. У меня есть требования заказчика, в рамках которых я и работаю.

To divp: если еще не сделал, лови

Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
CREATE FUNCTION DB2ADMIN.GETSPLIT(txt VARCHAR( 1024 ),
                                   delimiter VARCHAR( 1 ) )
    RETURNS TABLE (numid INTEGER, svalue VARCHAR( 1024 ))
    SPECIFIC DB2ADMIN.GETSPLIT
------------------------------------------------------------------------
-- SQL Пользовательская функция (Table)
------------------------------------------------------------------------
LANGUAGE SQL
MODIFIES SQL DATA -- insert available
NO EXTERNAL ACTION
      DETERMINISTIC
BEGIN ATOMIC

RETURN
   WITH
  temp1 (id, data) AS
    (VALUES ( 1 , txt)
  ),
  temp2 (id, word#, word, data_left) AS
    (SELECT id
      ,SMALLINT( 1 )
      ,SUBSTR(data,  1 ,
      CASE LOCATE(delimiter, data)
        WHEN  0  THEN LENGTH(data)
        WHEN  1  THEN  0 
        ELSE LOCATE(delimiter, data) -  1 
      END)
      ,LTRIM(SUBSTR(data,
      CASE LOCATE(delimiter, data)
        WHEN  0  THEN LENGTH(data) +  1 
        ELSE LOCATE(delimiter, data) +  1 
      END))
    FROM temp1
    WHERE data <> ''
    UNION ALL
    SELECT id
      ,word# +  1 
      ,SUBSTR(data_left,  1 ,
      CASE LOCATE(delimiter, data_left)
        WHEN  0  THEN LENGTH(data_left)
        WHEN  1  THEN  0 
        ELSE LOCATE(delimiter, data_left) -  1 
      END)
      ,LTRIM(SUBSTR(data_left,
        CASE LOCATE(delimiter, data_left)
          WHEN  0  THEN LENGTH(data_left) +  1 
          ELSE LOCATE(delimiter, data_left) +  1 
        END))
      FROM temp2
      WHERE data_left <> ''
    )
SELECT ROW_NUMBER() OVER(), word
FROM temp2
WHERE word <> ''
ORDER BY  1 ,  2 ;

END 
...
Рейтинг: 0 / 0
User defined functions
    #33134476
divp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
оно самое, всем огромное спасибо
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / User defined functions
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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