2017-06-02 60 views
0

我試圖在Netezza列中替換轉義字符,但它沒有正確替換。 請幫我解釋一下。我需要輸出爲replaces\\\\tring。以下是我收到的錯誤消息...如何在Netezza列中替換轉義字符

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數據庫的管理員模式。所有用戶都被授予對該模式的執行訪問權限。此外,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是開始......

1

這是因爲REPLACE功能需要安裝(這不是默認情況下)。還有一個叫做TRANSLATE的功能,可以以有限的方式使用,而不是REPLACE,但不幸的是它不適合你的情況。

您可以使用下面的查詢,而不是:

SELECT SUBSTRING(x, 1, INSTR(x, '\') - 1) || '\\\\' || SUBSTRING(x, INSTR(x, '\') + LENGTH('\')) FROM 
(SELECT 'replaces\tring' AS x) t 
  • \傳遞給INSTRLENGTH是要被替換的字符串。請注意,它們發生在三個位置。
  • \\\\中間是替換字符串。
  • replaces\tring是在搜索的字符串

檢查下面的例子爲取代我愛Netezza公司

SELECT SUBSTRING(x, 1, INSTR(x, 'love') - 1) || 'like' || SUBSTRING(x, INSTR(x, 'love') + LENGTH('love')) FROM 
(SELECT 'I love Netezza' AS x) t 
相關問題