• Credit is due and all good, but that still does not answer the question....

    SELECT m.customerid, m.customername

    FROM dbo.customer_master m

    inner join dbo.customer_language cl on m.customerid = cl.customerid

    inner join dbo.language_master lm on cl.languageid = lm.languageid

    where lm.languagename IN (Select languageName from dbo.JeffsFunction(@Languages)) -- Fetch the languages here with Jeff's code

    --this is the not so obvious part that answer the question you are asking

    GROUP BY m.customerid, m.customername

    HAVING COUNT(*) = (SELECT COUNT(*) FROM dbo.JeffsFunction)

    You need to know how many languages are in the parameter string (can be in a separate parameter to avoid calling the split function twice), then you need to count how many languages are matching per customer and make sure that those 2 numbers are equal... hence that customer speaks all required languages.