I am trying to do some text formatting with sql (MS SQL server 2008). I have three variables which are either going to return empty strings or some sort of text, they will never be null. I would like the display the text in the following way:
@Var1=’A’ @Var2=’B’ @Var3=’C’ ==> A, B, C
@Var1=’A’ @Var2=” @Var3=’C’ ==> A, C
@Var1=” @Var2=’B’ @Var3=’C’ ==> B, C
@Var1=” @Var2=” @Var3=’C’ ==> C
.
.
.
@Var1=” @Var2=” @Var3=” ==>
etc
Here is a simplified version of what I have…
DECLARE @Var1 NVARCHAR(100)
DECLARE @Var2 NVARCHAR(100)
DECLARE @Var3 NVARCHAR(100)
SET @Var1 = 'A'
SET @Var2 = 'B'
SET @Var3 = 'C'
SELECT
ISNULL(NULLIF(@Var1,''), '')
+
CASE
WHEN NULLIF(@Var1,'') IS NOT NULL AND NULLIF(@Var2,'') IS NOT NULL THEN ', ' ELSE ''
END
+
ISNULL(NULLIF(@Var2,''),'')
+
CASE
WHEN NULLIF(@Var2,'') IS NOT NULL AND NULLIF(@Var3,'') IS NOT NULL THEN ', ' ELSE ''
END
+
ISNULL(NULLIF(@Var3,''),'')
I feel like I am missing some important details. Let me know if there is any clarification needed.
Try:
Or with a
reversetrick to avoid the subquery:The key point here is that SQL Server is not very good at text formatting 🙂 You’re infinitely better off in a client side language like C#.
Live example at SQL Fiddle.