Skip to content
Advertisement

How to add ” and , for multiple ID in SQL Server

I am writing a SELECT query that has multiple id, and I have to manually add '','' (e.g '12L','22C').

I have around 2000 id in an Excel sheet.

Is there any quicker way to add ”,” to all the ID?

SELECT id, name 
FROM table 
WHERE id IN ('12L', '22C', 33j, 7k, 44J, 234C)

Advertisement

Answer

Here is a conceptual example for you. It will work in SQL Server 2012 onwards.

It is a three step process:

  1. Convert input string into XML.
  2. Convert XML into a relational resultset inside the CTE.
  3. Join with a DB table.

SQL

-- DDL and sample data population, start
DECLARE @tbl TABLE (ID INT IDENTITY PRIMARY KEY, Code VARCHAR(10), City VARCHAR(50));
INSERT INTO @tbl (Code, City) VALUES
('10T', 'Miami'),
('45L', 'Orlando'),
('50Z', 'Dallas'),
('70W', 'Houston');
-- DDL and sample data population, end

DECLARE @Str VARCHAR(100) = '22C,45L,50Z,105M'
    , @separator CHAR(1) = ',';

DECLARE @parameter XML = TRY_CAST('<root><r><![CDATA[' + 
        REPLACE(@Str, @separator, ']]></r><r><![CDATA[') + 
        ']]></r></root>' AS XML);

;WITH rs AS
(
   SELECT c.value('.', 'VARCHAR(10)') AS Code
   FROM @parameter.nodes('/root/r/text()') AS t(c)
)
SELECT t.* 
FROM @tbl AS t INNER JOIN 
   rs ON t.Code = rs.Code;
User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement