2009-05-07 17 views
0

私の結果セットの1つに、char - dataという列があります。私は最初の列から変更されたデータを運ぶ別の列を作成したい。私はすべての 'ö'をoeと交換したいと思っています。置換機能の問題

私はこのようにそれを試してみました:

Select NAME1, 
    case when POSSTR(NAME1, 'ö') is not null then REPLACE(NAME1, 'ö', 'oe') 
    end As __NAME1 
from xyz; 

、それが失敗しました。私は間違いはないが、öは置き換えられない。

私は間違いをしましたか、この操作を実行できませんか?

ありがとうございます! パトリック

+0

をあなたの実際の質問にはありませんあなたの質問のタイトルと一致するように見えます。なぜなら、問題は正しく動作していない関数の1つで、名前を作成しているという事実ではないからです。何か不足していますか? –

+1

WHERE POSSTR(NAME1、 'ö')IS NOT NULLをクエリに追加できますか?それは少なくとも、期待どおり機能していない機能を教えてくれるでしょう。 –

+0

あなたはタイトルについて大丈夫です。私はそれを変えた。 –

答えて

1

文字列が見つからない場合、POSIXはDB2のマニュアルによれば、0(NULLではない)を返します。

+0

これは次のようなクエリーを記述するときに機能します:cu.NAME1、case WHEN(POSSTR(lower(cu.NAME1)、 'ö')<> 0)THEN '-------' ELSE ' - ' end CusName1として、以下のクエリでエラーは表示されませんが、öも変更されません。私は何かが私の置換機能の使用法に間違っていると思いますか? (下位(cu.NAME1)、 'ö'、 'oe') –

+0

コメントが何らかの形で整形可能なのでしょうか? –

1

あなた、あなたが簡単に使用できるすべての行、両方が変更と変わらずの一覧を表示する2番目の列をしたい:

Select 
    NAME1, 
    REPLACE(NAME1, 'ö', 'oe') As __NAME1 
from xyz; 

また、あなたがこのテストすることができます。

Select 
    NAME1, 
    REPLACE(NAME1, 'ö', 'oe') As __NAME1 
from 
    xyz 
where 
    POSSTR(NAME1, 'ö') <> 0