SQL 函式NULLIF、NULL、ISNULL、COALESCE、IIF
阿新 • • 發佈:2018-12-07
NULLIF函式
NULLIF(Expression1,Expression2):給定兩個引數Expression1和Expression2,如果兩個引數相等,則返回NULL;否則就返回第一個引數。 等價於:Case WHEN Expression1=Expression2 Then NULL ELSE Expression1。 例如Select NULLIF(1,1)返回NULL,Select NULLIF(1,2)返回1。 有一個實際的應用,例如防止除0操作的放生,可以使用a/NULLIF(b,0),這樣就不怕b是0了,當然除0操作也可以通過別的方式判斷。 NULL NULL是個神奇的東西,表示空值,未知值,任何數與它加減乘除都返回NULL。 ISNULL函式 ISNULL(Expression1,Expression2):給定兩個引數Expression1和Expression2,如果Expression1是NULL,那麼返回Expression2,否則返回Expression1。 等價於:Case WHEN Expression1 is NULL Then Expression2 ELSE Expression1。 例如Select ISNULL(NULL,1)返回1,Select ISNULL(1,2)返回1。 有一個實際的應用,可以對空值進行預設值替代,例如SELECT ISNULL(email,'沒有填寫email') from table1,所有email為null的,用'沒有填寫email'來替代。 COALESCE函式 COALESCE(Expression1,Expression2,Expression3,......):接受一系列的表示式或列,返回第一個非空的值。 例如SELECT COALESCE(NULL,NULL,4,NULL,NULL,5),那麼返回,如果裡面的引數都為NULL,那麼會報錯。
Syntax
IIF ( boolean_expression, true_value, false_value )
select iif(30>45,'對','錯') as 結果 /* 結果 ---- 錯 */ select iif(null=null,'對','錯') as 結果 /* 結果 ---- 錯 */ select iif(null is null,'對','錯') as 結果 /* 結果 ---- 對 */
WITH TIES
與top()和order by 一起用,可以返回多於top的行。防止丟失想要的資訊。
例如:有個表table1
select top(3) * from table1 order by name desc:結果如下:(只有三條)
select top(3) with ties * from table1 order by name desc:結果如下:
小外掛,SQL Prompt,配合Microsoft SQL Server Management Studio,使用起來非常方便,同時再加上以下幾個快捷鍵:
(1)ctrl+5或F5,執行程式碼,如果想執行特定的語句,那麼只是選中該語句,然後F5或ctrl+E即可。
(2)ctrl+L:顯示執行計劃。
(3)ctrl+R:顯示隱藏下面的結果視窗,增大自己書寫sql的空間。