Регулярные выражения в DB2 SQL - PullRequest
9 голосов
/ 22 января 2011

(кроме использования UDF) Любая поддержка REGEXP-In-SQL для DB2 9.7?

Ответы [ 5 ]

6 голосов
/ 27 ноября 2011

Я Комикони (Кейсуке Кониши).

Я создал функцию регулярного выражения (UDF), которой нет в db2.UDF с использованием SQL / XML (Xquery).Вы можете легко установить.

Список регулярных выражений обеспечивает UDF

  1. REG_MATCHES обеспечивает совпадение существования (скалярное)
  2. REG_REPLACE подстановка строк (скаляр)
  3. REG_COUNT количество найденных совпадений (скаляр)
  4. REG_POSITION получение позиции совпадения (скаляр)
  5. REG_SUBSTR получает строку соответствия (Скалярная)
  6. REG_SUBSTR_TABLE список информации о строке соответствия (таблица)
  7. REG_TOKENIZE_TABLE список несоответствующей строковой информации (разделенный строкой-разделителем) (таблица)
  8. REG_ALLTOKEN_TABLE список несоответствующей строки и соответствующей строковой информации (таблица)

Сценарии могутскачать здесь.(Извините по-японски)

https://www.ibm.com/developerworks/jp/data/library/db2/j_d-regularexpression/

(английский: Машинный перевод Сценарий: последний из японских страниц)

Я с нетерпением ждуВаши отзывы и комментарии.

6 голосов
/ 28 апреля 2014

Реальный ответ заключается в том, что DB2 поддерживает регулярное выражение, поскольку PureXML был добавлен (включая v9.7) через xQuery с функцией совпадений.

Например:

db2 "with val as (
 select t.text
 from texts t
 where xmlcast(xmlquery('fn:matches(\$TEXT,''^[A-Za-z 0-9]*$'')') as integer) = 0
)
select * from val"

Для получения дополнительной информации:

5 голосов
/ 22 июля 2016

Начиная с DB2 11.1, есть встроенная поддержка регулярных выражений. Одна из новых функций - REGEXP_SUBSTR, и еще несколько.

SELECT REGEXP_SUBSTR('hello to you', '.o',1,1) 
   FROM sysibm.sysdummy1
5 голосов
/ 02 декабря 2015

Это прекрасно работает, за исключением DB2 z / OS - в DB2 v10 z / OS вы должны использовать PASSING следующим образом

   with val as (
     select t.text
     from texts t
     where xmlcast(xmlquery('fn:matches($v,"^[A-Za-z 0-9]*$")'
                    PASSING t.text as "v" ) as integer) = 0
    )
    select * from val
2 голосов
/ 22 января 2011

В DB2 9.7 нет встроенной поддержки регулярных выражений.

Единственный способ - использовать UDF или табличные функции, как описано в статье «Пони OMG», добавленной в комментарии.

@ dan1111: я не ценю редактирование моего сообщения, особенно если люди не могут правильно прочитать вопрос.ОП запросил Любую поддержку REGEXP-In- SQL для DB2 9.7

SQL не является XQuery !!!

Извините, не удаляйтеТекст моего 100% правильного ответа.Вы можете добавить комментарий или написать собственный ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...