SQL: Use COALESCE (Transact-SQL) to generate a list
COALESCE (Transact-SQL)
Returns the first nonnull expression among its arguments. (From MSDN)
COALESCE is essentially same as below:
CASE
WHEN (expression1 IS NOT NULL) THEN expression1
...
WHEN (expressionN IS NOT NULL) THEN expressionN
ELSE NULL
END
Example:
In this sample, we use COALESCE to generate a flat list. You can specify a delimiter to seperate the items in the list.
CREATE TABLE [dbo].[student](
[id] [int] NOT NULL,
[name] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[ssn] [varchar](11) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_student] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
INSERT student VALUES(1, 'andrew', '201-98-9238')
INSERT student VALUES(2, 'lindsay', '656-89-9238')
INSERT student VALUES(3, 'david', '555-22-1111')
GO
DECLARE @list varchar(1024)
SELECT @list = COALESCE(@list + '|', '') + name
FROM student
PRINT @list
Here is the result set.
andrew|lindsay|david
SQL: Use Dynamic SQL Query Correctly
SQL 2005: Use DMV and CROSS APPLY to Get Cached Plans
SQL 2005: Discontinued or Deprecated Features in SQL Server 2005
SQL 2005: Default Trace Enabled Option
SQL 2005: Column Level Permissions
SQL 2005: SQLCMD Supports Parameterized Variables and Macro Features
SQL 2005: DTS Has Become SSIS now
SQL 2005: Microsoft SQL Server 2005 JDBC Driver
SQL 2005: Query Notifications in ADO.Net 2.0
SQL 2005: Overcome SQL Index Size Limit
SQL 2005: DDL Triggers
SQL 2005: Why Should Use 64 Bit Now
SQL 2005: How to Rebuild The Master Database
SQL 2005: A Little Trick to Install SQL 2005 Onto Your Dirty DEV Machine
SQL 2005: New Resource Database
SQL 2005: Alter Index Rebuild
SQL 2005: XQuery Sample
SQL 2005: How to Move Database
SQL: Use COALESCE to Generate a List
SQL: How to Debug SQL Deadlocks
.Net: How to Bypass Strong Name Check
Agile: Lean Software Development - An Agile Toolkit
ORM: How to Use nHibernate 1.2 to Call Stored Procedure to Return a Dataset Without a Mapping Entity
AJAX: ASP.NET AJAX Tips
.Net: Debugging Commands
.Net: How to Run NUnit And Debug Your Test Fixtures Directly from VS 2005
.Net: How to Add Domain User to Local Group
.Net: Lock Value Type?
.Net: How to Create an Instance of a Generic Type with Parameters
.Net: How to Get Address of a Managed Type
ORM: New Features of nHibernate 1.2
.Net: How to Get System Error Message from HRESULT in Managed Code
.Net: Use Windows PowerShell Now
WMI: Use WMI to Run Commands on Remote Machine
API: GetLogicalProcessorInformation to Detect CPUs
.Net: How to Implement Singleton Correctly
.Net: There is no MTS object context (Exception from HRESULT: 0x8004E004)
.Net: The Net Objectives Pattern Repository
Web: Access Denied When ASP.Net Accesses Eventlog
Nant: Error Loading GUID of Project
AJAX: Ajax in Action
DTC: DtcGetTransactionManager Fails
.Net: Run .Net 1.1 COM+ Serviced Components Under .Net 2.0 Framework
.Net: Debugging Managed Code Tip
.Net: Assembly Binding Log Viewer (Fuslogvw.exe)
.Net: .Net Framework Design Guidelines
.Net: Use Global Catalog and CheckTokenMembership to Check AD Group Membership
THIS POST IS PROVIDED "AS-IS" WITH NO WARRANTIES AND CONFERS NO RIGHTS. Build time: Sun 03/30/2008
. ©2007 Dalun Software. All rights reserved. Back to Article List