ISNULL vs COALESCE

  ISNULL

COALESCE

The ISNULL Function is a built-in function to replace nulls with specified replacement values.

The COALESCE() function returns the first NON-NULL value.

ISNULL() is a T-SQL (Transact SQL) function and only work with Microsoft products e.g. Microsoft SQL Server

The COALESCE function is defined by the ANSI SQL standard and supported in all major databases e.g. MySQL, Oracle, PostgreSQL, DB2

The ISNULL() method takes only two parameters, it returns the first parameter if it’s not null and return the second parameter if the first parameter is null

COALESCE can take multiple parameters, and return the NOT NULL parameter starting from first to last

ISNULL ( check_expression , replacement_value )

COALESCE ( expression [ ,...n ] )

ISNULL is faster than COALESCE in SQL Server because of its a built-in function implemented in the Database engine

COALESCE slow compare to ISNULL

ISNULL just looks the data type of the first argument and makes everything of that type

COALESCE correctly promotes its arguments to the highest data type in the expression list

SELECT 17 / ISNULL(CONVERT(INT,NULL), 3.00);

Output

5

SELECT 17 / COALESCE(CONVERT(INT,NULL), 3.00)

Output

5.666666

ISNULL can only work with two values

COALESCE is more flexible and allows you to provide multiple columns and default values

 

DECLARE @x VARCHAR(10)

DECLARE @y VARCHAR(10)

DECLARE @z VARCHAR(10)

DECLARE @a VARCHAR(10)

SELECT @a = 'SQL'

SELECT COALESCE(@x,@y,@z,@a)

SELECT ISNULL(@x,@y);

Comments

  1. Really good information to show through this blog. I really appreciate you for all the valuable information that you are providing us through your blog.

    ReplyDelete

Post a Comment

Hi User,
Thanks for visiting My Blog and please provide your valuable feedback and subscribe for more updates. Please don't post any spam content or comments.
Thank You

Popular Posts

Failed to execute the package or element. Build errors were encountered

Restore of database 'DataBase_Name' failed. (Microsoft.SqlServer.Management.RelationalEngineTasks)

Get List of logins on SQL Server instance