匯出介面資料時採用分隔符是比較方便的,用2個字元會比用1個字元更好的規避資料質量問題,今天接數的同事說那邊只能支援1個字元分隔。替他著想,選擇|作為分隔符,然後再把高危欄位執行|替換為空格的邏輯。鬱悶的事情來了,居然沒找到teradata中有replace,唉~
我的辦法是先找到|所在的位置(沒找到就是0),然後從中間劈開,接上空格,就是下面這個公式,其中就是欄位名了:
substr(,0,index(,'|')) ||' '|| substr(,index(,'|')+1)
這一辦法也適合用於長度大於1的字串替換,須注意後面就不是+1,而是+length了。
接下去又有新的麻煩了。「東」這個字裡面居然有「|」?繼續查一下啊,「弢」、「珅」、「韡」這幾個字裡面也有「|」,嗯,看來「|」是不能用了。老實說,問題的根源還是在對方只支援單個字元作為分隔符(這件事情相當奇怪啊,2023年了居然還有這樣的事情?)
咋辦呢?技術上肯定是說服對方採用雙字元分隔符最好,但是問題是企業內部的精神是業務為導向,容不下技術上追求完美的行為呢。
咋辦呢?拼概率吧。嗯,換了個字元「!」,檢視乙個月內的資料,不會出異常哦。當然了,髒資料裡面還是會有「!」這個符號的,既然是髒資料,再髒一些也無所謂了,「!」替換為空格也沒啥風險,是吧?
好了,這個問題到此為止。最佳的解決辦法仍然是雙字元分隔,但是用「!」分隔並且做一些技術性處理,風險也能接受。最後,還是要嘗試去說服對方接受雙字元分隔,實在是談不下來,只好埋下一顆「!」地雷並預祝對方值班人員好運了~~~~
Teradata在SQL中實現字串替換
匯出介面資料時採用分隔符是比較方便的,用2個字元會比用1個字元更好的規避資料質量問題,今天接數的同事說那邊只能支援1個字元分隔。替他著想,選擇 作為分隔符,然後再把高危欄位執行 替換為空格的邏輯。鬱悶的事情來了,居然沒找到teradata中有replace,唉 我的辦法是先找到 所在的位置 沒找到就...
在SQL中實現陣列
t sql象陣列一樣處理字串 分割字串 在日常的程式設計過程中,陣列是要經常使用到的。在利用sql對資料庫進行操作時,有時就想在sql使用陣列,比如將1,2,3,4,5拆分成陣列。可惜的是在t sql中不支援陣列。不過還是有變通的辦法。我們可以自己編寫兩函式get strarraylength 取得...
在SQL中實現陣列功能
t sql象陣列一樣處理字串 分割字串 在日常的程式設計過程中,陣列是要經常使用到的。在利用sql對資料庫進行操作時,有時就想在sql使用陣列,比如將1,2,3,4,5拆分成陣列。可惜的是在t sql中不支援陣列。不過還是有變通的辦法。我們可以自己編寫兩函式get strarraylength 取得...