使用 2 種 REPLACE Function 處理 NetSuite Saved Search 欄位中的特殊字符

在 NetSuite 中,user 幾乎可以將各式各樣的符號與字段放入 Record Type 的文字欄位,例如 NAME、MEMO 欄位。

若我們在 NAME 欄位中放入特殊字符,在下載檔案打開後,會發現 NetSuite 已經有幫我們做處理,會在 CSV 檔案中該欄位字段開頭與結尾處添加雙引號(“”),以保證檔案正常下載與順利從 Excel 中讀取。但如果提供具有特殊字符的 CSV 文件供資料交換,可能會造成有些系統無法正常正讀取。

此篇探討 CSV 文件需要避免的符號、如何用 Saved Search(SS)配合 REPLACE Function 處理上述問題。

首先,盡量在系統中避免使用特殊字符造成 CSV 匯出後續問題

#1 不管任何的系統,對 CSV 或其他類型的檔案處理內容時,都需要避免特定特殊符號、數字或字母。若資料源就能避免這類的問題,後續較不會出現資料格式錯誤或解析問題的。

#2 CSV 需要避免的符號大致上有:", ', :, |, *, &, ^, %, $, #, @, ;, {, }, (, ), [, ], !, -, =, >, <, ,, ., , /

#3 若使用特殊字符,NetSuite 產生的 CSV 會用雙引號(“”)包覆內容,所以下載的檔案是沒有問題。但有些系統只要 CSV 檔案內有特殊字符,匯入時就會失敗。所以在上傳時,盡量也要檢查檔案內容。

若要解決#3 的問題,我們可以從 SS 匯出前著手進行。

如何使用 Saved Search 公式刪除特殊字符

使用 REPLACE Function

REPLACE 的公式原廠文件解釋如下:

REPLACE(char, search_string[, replacement_string ])

returns char with every occurrence of search_string replaced with replacement_string

REPLACE 的範例

#1 為要下載內容的 Record Type 建立一個 SS,欄位包含 NAME

#2 在 SS-Results 的分頁中新增一個 Formula(Text)欄位

#3 輸入 Formula (參考以下灰色區域),此公式的意思是:用空白來取代可能會造成檔案上傳下載錯誤的特殊符號,例如:“, ‘, :, |, *, &, ^, %, $, #, @, ;, {, }, (, ), [, ], !, -, =, >, <, ,, ., , /

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(REPLACE(REPLACE({name},'"',''),
':',''),'''',''),'|',''),'*',''),'&amp;',''),
'^',''),'%',''),'$',''),
'#',''),'@',''),';',''),
'{',''),'}',''),'[',''),']',''),'!',''),'(',''),
')',''),'-',''),'=',''),
'&gt;',''),'&lt;',''),',',''),'.',''),'\',''),'/','')

#4 其中最裡面那一層的 REPLACE({name},'”‘,”),’:’,”)的解釋為:
{name}為這 name 這個欄位的 ID,若在 SS 中要顯示內容,則以{name}表示。其中{name}的內容有包含’‘,皆替換為’(空)‘。

後續這個公式在執行的是:REPLACE 功能的輸出將變為下一個 REPLACE 功能的輸入,直到最外層的 REPLACE 功能。

#5 成果如下,之後再匯出 CSV 格式

replace function

使用 REGEXP_REPLACE Function

REGEXP_REPLACE 的公式原廠文件解釋如下:

REGEXP_REPLACE(source_char, pattern[, replace_string[, position[, occurrence[, match_parameter ]]]])

lets you replace a sequence of characters (source_char) that matches a regular expression pattern with another set of characters (replace_string)

REGEXP_REPLACE 的範例

#1 接續用上個範例

#2 在 SS-Results 的分頁中新增一個 Formula(Text)欄位

#3 輸入 Formula (參考下方),此公式的意思:是將替換所有不是 0~9, A~Z, a~z, (空格)的內容為空。

REGEXP_REPLACE({name}, '[^0-9A-Za-z ]', '')

#4 若{name} 為 :此為測試 ()name with special,"@! character,加入上述 formula 後,結果為:name with special character

總結

REPLACE 與 REGEXP_REPLACE 公式在 NetSuite 中很常使用,除了上述說的文字欄位外,還有很多可以運用。在 NetSuite 中 SQL/公式用法跟資料庫 SQL 用法都有異曲同工之妙,若想多了解,請參考:SQL Server REPLACE() Function

如果這篇文章對你有幫助,歡迎到本司的 Linkedin 按讚,接下來才不會錯過任何一篇教學喔!

分享英薩吉的這篇內容
返回頂端