• Loner - Friday, January 20, 2017 1:26 PM

    BTW I want the name in different columns.

    First name - Mary
    Middle Name - B
    Last Name - SMITHThanks

    Well, that changes the game.

    My solution:
    WITH SC AS(
      SELECT RIGHT(N.Name, LEN(N.Name) - (PATINDEX('% AND %', N.Name) + 4)) AS SecondConsumer
      FROM #NAME N
      WHERE N.Name LIKE '% AND %'),
    SCS AS (
      SELECT LEFT(SC.SecondConsumer, CHARINDEX(' ',SC.SecondConsumer) - 1) AS FirstName,
        RIGHT(SC.SecondConsumer, CHARINDEX(' ',REVERSE(SC.SecondConsumer))-1) AS Surname,
        *
      FROM SC)
    SELECT FirstName,
       CASE WHEN LEN(SCS.Firstname) + LEN(SCS.Surname) + 1 < LEN(SCS.SecondConsumer)
        THEN SUBSTRING(SCS.SecondConsumer, LEN(SCS.Firstname) +2 , LEN(SCS.SecondConsumer) - (LEN(SCS.Firstname) + LEN(SCS.Surname) + 1) - 1) END AS MiddleName,
       SCS.Surname,
       SecondConsumer
    FROM SCS;

    @luis, I would not be surprised if this is Vendor based.

    EDIT: Slight amendment due to leading whitespace on middlename.

    Thom~

    Excuse my typos and sometimes awful grammar. My fingers work faster than my brain does.
    Larnu.uk