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