COALESCE 函數 (將null轉換)


  COALESCE函數會依次檢查輸入的參數,返回第一個不是NULL的參數,只有當傳入 COALESCE函數的所有的參數都是NULL的時候,函數才會返回NULL。例如, COALESCE(piName,''),如果變量piName為NULL,那么函數會返回'',否則就會返回piName本身的值。

  下面的例子展示了如何對參數進行檢查何初始化。

  Person表用來存儲個人的基本信息,其定義如下:

  表1: Person

  

  下面是用於向表Person插入數據的存儲過程的參數預處理部分代碼:

  SET poGenStatus = 0; SET piName = RTRIM(COALESCE(piName, '')); SET piRank = COALESCE(piRank, 0); -- make sure all required input parameters are not null IF ( piNum IS NULL OR piName = '' OR piAge IS NULL ) THEN SET poGenStatus = 34100; RETURN poGenStatus; END IF;

  表Person中num、name和age都是非空字段。對於name字段,多個空格我們 也認為是空值,所以在進行判斷前我們調用RTRIM和COALESCE對其進行處理,然后使用 piName = '',對其進行非空判斷;對於Rank字段,我們希望如果用戶輸入的NULL,我們把它設置成"0",對其我們也使用COALESCE進行初始化;對 於"Age"和"Num" 我們直接使用 IS NULL進行非空判斷就可以了。

  如果輸入參數沒有通過非空判斷,我們就對輸出參數poGenStatus設置一個確定的值(例子中為 34100)告知調用者:輸入參數錯誤。

  下面是對參數初始化規則的一個總結,供大家參考:

  1. 輸入參數為字符類型,且允許為空的,可以使用COALESCE(inputParameter,'')把NULL轉換成'';

  2. 輸入類型為整型,且允許為空的,可以使用COALESCE(inputParameter,0),把空轉換成0;

  3. 輸入參數為字符類型,且是非空非空格的,可以使用COALESCE(inputParameter,'')把NULL轉換成'',然后判斷函數返回值是否為'';

  4. 輸入類型為整型,且是非空的,不需要使用COALESCE函數,直接使用IS NULL進行非空判斷


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM