Hi, day4我們接著來介紹, 若遇到字串欄位時, 在實務中遇到需求可以怎麼處理,
情境1:資料欄位STORE_CITY, 當中包含了各縣市名稱, 若今天需求是要看到六都各縣市&非六都的情況可以怎麼做?
首先觀察資料欄位的項目, 可以發現項目內容很整潔, 沒有異常值或null值的狀況
此需求可以想像成在STORE_CITY欄位中, 我們只要抓取’六都縣市名稱’, 非六都的縣市名稱全部取代為’非六都’, 那我們可以使用CASE函數來處理
CASE函數使用方法如下
CASE [目標欄位]
WHEN ‘指定文字’ THEN ‘你想要的取代名稱’
ELSE ‘上述條件皆完成後其他的取代名稱’
END
讓我們來實作一次此情境可以怎麼編寫此函數, 建立新欄位, 欄位名稱這邊不跟STORE_CITY重複, 目的是來驗證函數是否有寫正確
完成後我們看到新的欄位出現, 那我們右鍵點選非六都, 選擇只保留, 來驗證一下STORE_CITY欄位是否只會剩下非六都的縣市, 由此可以發現函數編寫正確
情境2:資料欄位STORE_AREA中, 包含各鄉鎮市區的項目及null值, 若我們要把null值的項目呈現為’無資料’, 且其他有鄉鎮市區項目的名稱中, 若字數超過2個字元以上的項目把‘區’此字移除, 例如STORE_CITY欄位有台中市, STORE_AREA為北區, 把區移除的話結果會變成, 台中市的STORE_AREA會呈現為 ‘北’ 一個字, 不好理解
我們要做的第一件事情是把null值先取代為’無資料’, 可以使用IFNULL函數,
使用方法為
IFNULL([目標欄位], ‘若為null值要呈現甚麼文字’)
接著我們使用IF, LEN, REPLACE函數, 先用LEN函數把字串項目<=2的內容取出並維持原本的項目名稱, 若>2則將’區’取代為沒有文字
然後我們只篩選STORE_AREA中的中區, 來看看函數寫的對不對
我們發現新的欄位只顯示一個’中字’, 表示STORE_AREA欄位中的字元有誤, 點擊STORE_AREA欄位中的中區兩次, 可以看到中區兩字後面還有全型空格, 所以我們需要先使用REPLACE函數把全型空格移除掉, 再做上述的處理
REPLACE([STORE_AREA], ' ', '')
最後再編寫剛剛的if & replace函數, 只篩選出中區來確認, 結果正確!
情境3:我們手邊有通路類別欄位, 需求新增一個欄位, 內容是將其中的’加盟’, ‘盤商’合併為’加盟&盤商’, 其他項目維持原名稱, 我們可以使用IF 和 REGEXP_MATCH函數, 使用方法為
IF REGEXP_MATCH([目標欄位], (‘此欄位有的內容1|此欄位有的內容2’))
THEN ‘你預設想設定的項目名稱’
ELSE [目標欄位]
END
最後把新的欄位只篩選 ‘加盟&盤商’, 結果正確!
以上是實務中關於字串欄位的處理狀況
day5我們來看看遇到數字格式欄位可以怎麼處理