• I would disagree with your contention that this is the fastest way to split a delimited string. You've encapsulated the logic in a UDF, which itself must be called row-by-row, but even worse, it must instantiate the XML "service" each time the UDF is called. In my experience, XML conversions have a higher cost than normal string processing, especially in set-based scenarios. If a delimited string had hundreds or thousands of elements, then perhaps an XML solution might be faster than a CTE-based chopper, but that's a rare situation, and wouldn't follow any normal design pattern.