COALESCE
COALESCE ( expression [, expression [...] ] )
Returns the first non-NULL expression encountered in the list.
Description
COALESCE
returns the first expression in the list that is not NULL
.
If all expressions in the list evaluate to NULL
, then COALESCE
returns NULL
.
COALESCE
is a shorthand for a CASE
expression, and it conforms to the SQL standard.
The list of arguments in COALESCE
must be of the same data type, or of a data type that can be implicitly converted to a common data type.
Syntax
COALESCE ( expression1 [, expression2, ... ] )
Arguments
expression1 [, expression2, ... ]
A list of expressions of any type.
Return Type
Returns the data type of the highest precedence from the arguments.
Examples
Example 1: Basic Usage
This example shows how COALESCE
returns the first non-NULL value.
SELECT COALESCE(NULL, 1, 'abc'); -- Returns 1
SELECT COALESCE('abc', NULL, 1); -- Returns 'abc'
SELECT COALESCE(NULL, NULL, NULL); -- Returns NULL
Example 2: Handling NULL Values in a Table
Imagine a Products
table with columns ProductName
and Description
.
If Description
is NULL
, you might want to display a default message.
-- Sample Table Structure
CREATE TABLE Products (
ProductID INT PRIMARY KEY,
ProductName VARCHAR(100),
Description VARCHAR(255)
);
INSERT INTO Products (ProductID, ProductName, Description) VALUES
(1, 'Laptop', 'A high-performance laptop.'),
(2, 'Keyboard', NULL),
(3, 'Mouse', 'Ergonomic wireless mouse.');
-- Query using COALESCE
SELECT
ProductName,
COALESCE(Description, 'No description available.') AS ProductDescription
FROM
Products;
The result of the above query would be:
ProductName | ProductDescription ------------|--------------------------------- Laptop | A high-performance laptop. Keyboard | No description available. Mouse | Ergonomic wireless mouse.
Note on Data Type Precedence
When using COALESCE
with expressions of different data types, SQL Server determines a common data type based on data type precedence rules. For example, if you mix an integer and a string, the result will be a string. Ensure this is the intended behavior for your queries.