(UDFの使用以外)DB2 9.7のREGEXP-In-SQLサポートはありますか?
DB2 9.7には、正規表現の組み込みサポートはありません。
唯一の方法は、コメントに追加された記事「OMGPonies」で説明されているようにUDFまたはテーブル関数を使用することです。
@ dan1111:特に人々が質問を正しく読めない場合、私の投稿が編集されていることに感謝しません。 OPからの質問任意のREGEXP-In -[〜#〜] sql [〜#〜] DB2 9.7のサポート
SQLはXQueryではありません!!!
申し訳ありませんが、100%正解のテキストを削除しないでください。コメントを追加したり、独自の回答を書き込んだりできます。
本当の答えは、Matchs関数を使用してxQueryを介してPureXMLが追加された(v9.7を含む)ため、DB2は正規表現をサポートしているということです。
例えば:
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"
詳細については:
コミコニ(小西圭佑)です。
Db2には存在しない正規表現関数(UDF)を作成しました。 SQL/XML(Xquery)を使用するUDF。簡単にインストールできます。
正規表現のリストはUDFを提供します
スクリプトはここからダウンロードできます。 (日本語でごめんなさい)
https://www.ibm.com/developerworks/jp/data/library/db2/j_d-regularexpression/
(英語: 機械翻訳 スクリプト:日本語ページの最後)
皆様からのフィードバックやコメントをお待ちしております。
DB2 11.1以降、組み込みの正規表現サポートがあります。新しい関数の1つは REGEXP_SUBSTR
そして他にもいくつかあります。
SELECT REGEXP_SUBSTR('hello to you', '.o',1,1)
FROM sysibm.sysdummy1
これは、DB2 z/OSを除いて正常に機能します。DB2v10z/ 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