суббота, 16 марта 2013 г.

Что происходит при конкатенации с NULL

-- Зависит от параметра CONCAT_NULL_YIELDS_NULL


-- Имя пользователя неизвестно

SET CONCAT_NULL_YIELDS_NULL ON;
DECLARE @UserName NVARCHAR(50);
SET CONCAT_NULL_YIELDS_NULL ON;
SELECT 'Hello' + @UserName AS Hello;
GO
SET CONCAT_NULL_YIELDS_NULL OFF;
DECLARE @UserName NVARCHAR(50);
SELECT 'Hello, ' + @UserName AS Hello;
GO
SET CONCAT_NULL_YIELDS_NULL ON;
DECLARE @UserName NVARCHAR(50);
SELECT 'Hello' + ISNULL(', ' + @UserName, '') AS Hello;
GO

-- Имя пользователя известно

SET CONCAT_NULL_YIELDS_NULL OFF
DECLARE @UserName NVARCHAR(50) = 'Mike'
SELECT 'Hello, ' + @UserName AS Hello
GO
DECLARE @UserName NVARCHAR(50) = 'Mike'
SET CONCAT_NULL_YIELDS_NULL ON
SELECT 'Hello' + ISNULL(', ' + @UserName, '') AS Hello