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
SQLCommand IsNullOrEmpty IsNullOrWhiteSpace COALESCE CONCAT Concatenate CaseElseEnd