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:
- Convert input string into XML.
- Convert XML into a relational resultset inside the CTE.
- 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;