powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как передать параметр в функцию fn:matches?
6 сообщений из 6, страница 1 из 1
Как передать параметр в функцию fn:matches?
    #38034944
K.T.V.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Озадачилась проблемой сравнения текстовых данных с шаблоном, хранящимся в таблице.
На ms sql это пишется так:
Код: sql
1.
2.
3.
declare @param varchar(50)
set @param='table111'
select * from table1 as t where @param like t.shablon



Внимательное изучение форума дало представление, что для DB2 z/os в данном случае чисто теоретически может помочь XQUERY или написание собственной функции на яве.
Остановимся на первом варианте: а можно ли в функцию fn:matches() в качестве шаблона напрямую передать поле из таблицы?

Например,
Код: sql
1.
2.
3.
4.
5.
6.
7.
create table table1 (
  id int,
  shablon varchar(50)
 );
 
 insert into table1
 values(1,'table*');



Попытка использовать поле таблицы в качестве второго параметра в функции
Код: sql
1.
2.
select * from table1 as t
where xmlcast(xmlquery('if (fn:matches("table111",$q )) then 1 else 0' passing t.shablon as "q") as smallint)=1;




Приводит к ошибке
Код: sql
1.
AN XQUERY FUNCTION NAMED fn:matches WITH 2 PARAMETERS IS NOT DEFINED IN THE STATIC CONTEXT



Кто что посоветует?
...
Рейтинг: 0 / 0
Как передать параметр в функцию fn:matches?
    #38035790
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
K.T.V.а можно ли в функцию fn:matches() в качестве шаблона напрямую передать поле из таблицы?
Попытка использовать поле таблицы в качестве второго параметра в функции
Код: sql
1.
2.
select * from table1 as t
where xmlcast(xmlquery('if (fn:matches("table111",$q )) then 1 else 0' passing t.shablon as "q") as smallint)=1;

Нет под рукой db2 на z/os, но похоже, что fn:matches в качестве шаблона принимает только константу:
Infocenterpattern is string literalДля простой проверки вхождения строки используйте функцию locate, иначе пишите свою на java.
...
Рейтинг: 0 / 0
Как передать параметр в функцию fn:matches?
    #38035911
K.T.V.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Марк, спасибо, я так и думала.
Простая проверка вхождения тут не подойдет, а функцию на java коллега уже полдня никак не может внедрить в проект :(
...
Рейтинг: 0 / 0
Как передать параметр в функцию fn:matches?
    #38036703
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mark Barinstein,

Что примечательно, у DB2 for LUW (v9.7) pattern - xs:string value. Работает.

Очевидный вариант помимо своей функции - динамически запрос, если паттерн не изменяется в рамках одного statement execution.
...
Рейтинг: 0 / 0
Как передать параметр в функцию fn:matches?
    #38038074
K.T.V.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не канает. бьемся с явой.
...
Рейтинг: 0 / 0
Как передать параметр в функцию fn:matches?
    #38039988
K.T.V.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Победили яву! И написала свою функцию с курсором, как вариант, да :)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как передать параметр в функцию fn:matches?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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