TL;DR
使用正則表達式即可去除任何空白: [[:space:]]
正文:
剛剛遇到一個問題,就是在 sql中有兩個欄位,如果 A欄位是 NULL或是空白就使用 B欄位
但是 A欄位是空白但沒有正常換到 B欄位去
註:不能使用 COALESCE,因為 COALESCE只會判斷是不是NULL,而我們也要判斷全部皆是空白的情況
在測試中感覺這題很簡單,因為只要使用 TRIM就可以了,但我忽略了一個情況:全形空白!
測試語法:
select ' ' 三個半形空白符號,
TRIM(' ') TRIM三個半形空白符號,
' ' 三個全形空白符號,
TRIM(' ') TRIM三個全形空白符號
from DUAL;
測試結果:
語法:
select ' ' 三個半形空白符號,
TRIM(' ') TRIM三個半形空白符號,
TRIM(' ') REGEX三個半形空白符號,
REGEXP_REPLACE(' ', '[[:space:]]') 三個全形空白符號,
TRIM(' ') TRIM三個全形空白符號,
REGEXP_REPLACE(' ', '[[:space:]]') REGEX三個全形空白符號
from DUAL;
執行結果:
結論:使用正則表達式可以完美處理全形和半形空白的情況!
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com