web-dev-qa-db-ja.com

RegEx置換によるステートメントの選択-DB2 9.7

Db2 9.7のselectステートメントのフィールドで、複数の空白(単語間の)を1つのスペースに置き換えるグローバル正規表現を実行する必要があります。正規表現は次のようなものに基づいています。

\s{2,}

クエリ(冗長な空白を間引かない)は次のようになります。

select
  random_degrees_of_redundant_white-space_between_words as fieldName
from tableName

結果の内容は次のようになります。

I like  to   put    varying      numbers      of    whitespaces

     between

   words.

DB2 9.7でxmlqueryとfn:replaceを使用してこれを達成すると主張する人々の例を見てきましたが、自分の例を見て自分でこれを達成することはできません。

私の抽象的な例を、db2 9.7でこれを実現するためのモデルとして使用できるものに変換するのに十分な親切でしょうか?

カスタム関数またはストアドプロシージャを介してこれを達成する答えを提供しないでください。 DB2 9.7のデフォルトインストールで独立したselectステートメントを使用して(db2にアドオンをインストールせずに)これを実現したいと思います。

1
Lonnie Best

あなたは

取り替える

このような機能:

select replace('Text   with  random      spaces', '  ', ' ') 
  from yourtable

2番目の引数は2つのスペースを示し、3番目の引数は単一の空白です。

編集:

複数の空白の場合、これは機能します-ネイティブ:

SELECT c1, length(c1), xmlquery('fn:replace($c,"[ ]+", " ")'  PASSING c1 AS "c") 
  FROM test1 
1