Rotate SQL data separated by comma in SQL "in" statement

First statement:

Select GroupMember
FROM Group 

Result: Los Angeles, San Diego (this is a row)

Second statement:

 SELECT *
 FROM Store_Information 
 WHERE Store_Name IN ('Los Angeles', 'San Diego');

How to turn Los Angeles, San Diego (one information) into IN ("Los Angeles", "San Diego")?

+4
source share
4 answers

Use internal query

SELECT * FROM Store_Information
WHERE Store_Name IN (Select GroupMember FROM Group)
+3
source

you can write a query like

SELECT * 
FROM 
Store_Information WHERE Store_Name IN (
SELECT Split.a.value('.', 'VARCHAR(100)') AS String   
       FROM  (SELECT  CAST ('<M>' + REPLACE(groupname, ',', '</M><M>') + '</M>' 
                             AS XML) AS groupname       
               FROM  Group) 
       AS A 
CROSS APPLY groupname.nodes ('/M') AS Split(a))
+1
source

, - :

SELECT s.*
FROM Store_Information s
JOIN Group g ON g.GroupMember = s.Store_Name
0

Select GroupMember
FROM Group 

1 , -, -

,

SELECT * FROM Store_Information
WHERE Store_Name IN (Select ''' + REPLACE(GroupMember,',',''',''') + ''' FROM Group)
  • " Los
  • replace, → ','
  • "
0

All Articles