2017-06-02 40 views
0

Netezza列のエスケープ文字を置き換えようとしていますが、正しく置き換えられません。 これについて私に手伝ってください。Netezza列のエスケープ文字の置き換え方法

select replace('replaces\tring','\','\\\\'); 

出力はreplaces\\\\tringとする必要があります。以下は、私が得ているエラーメッセージです。

ERROR [42S02] ERROR: Function 'REPLACE(UNKNOWN, UNKNOWN, UNKNOWN)' does not exist Unable to identify a function that satisfies the given argument types You may need to add explicit typecasts

ありがとうございます。

+0

を私はちょうどこの、その寄付を試してみました私はあなたの希望する出力。それはあなたに何を与えるのですか? – TheEsnSiavashi

+0

私はちょうど編集し、問題のエラーメッセージを追加してください、私にいくつかの提案をしてください。 – learner

答えて

0

この特定の機能は「SQL拡張ツールキット」の一部であり、私たちのシステムではSQLEXTデータベースのADMINスキーマに配置されています。すべてのユーザーに、そのスキーマへの実行アクセス権が与えられています。さらにdatabase.schemaは経路に配置されている(DBAのは、世界的にそれをやったが、必要であれば、あなたのセッションで「= ...設定PATH」を発行することができます)

私たちのパスは次のとおりです。

select current_path; 

CURRENT_PATH 
--------------------------------------------------------------------------------------- 
SQLEXT.ADMIN,INZA.INZA,NZA.INZA,NZM.INZA,NZMSG.INZA,NZR.INZA,NZRC.INZA,SYNCHDB.ADMIN 

、あなたはSQLEXTが先頭にある見ることができるように... REPLACE関数は(デフォルトではありません)にインストールする必要があるため

1

です。 REPLACEの代わりに制限された方法で使用できるTRANSLATEと呼ばれる別の機能がありますが、残念ながらあなたの状況に合っていません。

あなたが代わりに以下のクエリを使用することができます。INSTRLENGTHに渡さ

SELECT SUBSTRING(x, 1, INSTR(x, '\') - 1) || '\\\\' || SUBSTRING(x, INSTR(x, '\') + LENGTH('\')) FROM 
(SELECT 'replaces\tring' AS x) t 
  • \を交換するための文字列です。 3つのポジションで発生することに注意してください。
  • \\\\が置換文字列です。
  • replaces\tringはで検索する文字列である

私はネティーザを愛しようを置き換えるために、以下の例を確認:。

SELECT SUBSTRING(x, 1, INSTR(x, 'love') - 1) || 'like' || SUBSTRING(x, INSTR(x, 'love') + LENGTH('love')) FROM 
(SELECT 'I love Netezza' AS x) t 
関連する問題