SQL筆記:SQL之IsNullOrEmpty、Concatenate、Case.Else.End
在Microsoft SQL Server 2008時,還沒有支援字串相加的函式Concat(Concatenate),也沒有所謂的string.IsNullOrEmpty();。因此,要進行這些操作的話,需要一些小技巧來達成,以下是這篇文章的介紹。
利用IsNull()來完成IsNullOrEmpty()
SQL的IsNull語法如下:
IsNull(check_expression, replacement_value )
因此,我們可以利用這個函式來完成string.IsNullOrEmpty();的判斷功能。
IsNull(Table.Column, '') = ''
變化成IsNullOrWhiteSpace()也沒問題
LTrim(IsNull(Table.Column, '')) = ''
用「+」符號來取代Concat(Concatenate)
如標題所說,要到SQL 2012才開始支援在Oracle、MySQL上面在使用的Concat指令,在此之前,請使用M$派系慣用「+」符號,其實也是很直覺啦!
SELECT Table.Column1 + '/' + Table.Column2 AS cTemp, Table.Column3 FROM Table
用Case...Else...End來完成IF判斷
在SELECT VIEW時期,有時候需要進行先期的判斷,這時候你可以在SELECT的後端串上Case...Else...End結構來輔助這些判斷的需求。綜合一下上面的指令,下面的程式碼做一下範例。
SELECT
CASE WHEN Table.Column1 IS NULL THEN
Table.Column2
ELSE
CASE WHEN IsNull(Table.Column2, '') = '' THEN
Table.Column1
ELSE
Table.Column1 + '/' + Table.Column2
END
END AS cTemp,
Table.Column3
FORM Table