sql-isnull方法的使用

iSQlServer發表於2010-12-09

在程式開發過程中,程式設計師用到最多的估計就是資料庫了,幾乎在任何一個地方都會和資料庫打交道,資料庫的增加,刪除,更新,查詢,都必須用到sql語句或者是儲存過程,歸根結底還是試用sql資料庫,但是在敲寫相關sql語句時,我們經常會遇到一些空的字串或者是欄位,這就給我們對資料庫造成一定的麻煩,系統經常會提示“某值null不能轉換”“插入的值不能為空”等等諸如此類的提示,isnull函式會幫助你搞定這些小菜。

Isnull 函式主要作用是將為空的值替換為指定值,如果不為空返回檢查型別的返回值,isnull的語法:

Isnull check_expression , replacement_value

引數check_expression ,是待檢查是否為空的表示式,引數replacement_value是帶替換的指定值,如果引數check_expression為空則引數replacement_value進行填充,如果check_expression不為空,則返回表示式相應的返回值型別,需要注意到是引數check_expression和引數replacement_value的型別需要保持一致,否則要進行相應的轉換,下面通過例項說話,

例一:

select isnull(studentid,100) from student_info

解釋:這個例項的意思就是查出student_info表中欄位為studentid的值,如果欄位studentid值為空就在欄位studentid中新增100,或者你可以動態的向這個空欄位新增值。

private int GetNewBillID()

        {

            string sql ="select isnull(max(FBillId),0) from Vs_ICChange";

            int id = Convert.ToInt32(sh.QueryValue(sql));

            if (id == 0)

            {

                return 1000;

            }

            else

            {

                return id + 1;

            }

        }

 

這個私有方法就是查詢表Vs_ICChangeFBillId欄位,如果FBillId欄位為空就換值為0,通過執行語句得到數值id,在對id資料進行判斷,如果id=0,直接返回id=1000,如果id已經有數值的話,直接在原來的基礎上加一,再將返回的id數值之間插入到相關FBillId欄位即可,比如:

Insert into Vs_ICChangeFBillId values(‘”+id+”’);

這樣就可以在沒有數值的欄位讓欄位值實現人工自增,從而程式就不會報錯。

例二:

 

use test1

  insert into a(name,score)

  select name,isnull(score,100) from b

解釋:從表b中查出相關資料,然後插入到表a,如果表b中的score欄位為空,則放入數值100,並插入到a表中。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-681354/,如需轉載,請註明出處,否則將追究法律責任。

相關文章