Create the split funtion that returns a table with seprate rows for elements in the csv.
CROSS APPLY this function in your query.
Create the split funtion that returns a table with seprate rows for elements in the csv.
CROSS APPLY this function in your query.
SELECT c.customer_id,
con.contact_id,
c.company_name,
con.first_name,
con.last_name,
con_email.items [email]
FROM customer c WITH(NOLOCK)
JOIN contact con WITH(NOLOCK)
ON c.customer_id = con.customer_id
CROSS APPLY dbo.Split(con.email, ';') con_email
WHERE con.email LIKE '%;%'
ORDER BY c.customer_id,
con.contact_id;
---------------------------------------------------------------------
CREATE FUNCTION dbo.Split(@String VARCHAR(8000),
@Delimiter CHAR(1))
returns @temptable TABLE (
items VARCHAR(8000))
AS
BEGIN
DECLARE @idx INT
DECLARE @slice VARCHAR(8000)
SELECT @idx = 1
IF Len(@String) < 1
OR @String IS NULL
RETURN
WHILE @idx != 0
BEGIN
SET @idx = Charindex(@Delimiter, @String)
IF @idx != 0
SET @slice = LEFT(@String, @idx - 1)
ELSE
SET @slice = @String
IF( Len(@slice) > 0 )
INSERT INTO @temptable
(Items)
VALUES (@slice)
SET @String = RIGHT(@String, Len(@String) - @idx)
IF Len(@String) = 0
BREAK
END
RETURN
END