Your case statements are hosed up. This will work:
If @sortOrder LIKE 'ASC%'
BEGIN
SELECT * FROM @Sorting
ORDER BY CASE WHEN PATINDEX('[0-9]%', BusinessName)=1
THEN LEFT(BusinessName,PATINDEX('[0-9]%',BusinessName))
ELSE CASE WHEN PATINDEX('[^0-9a-zA-Z]%', BusinessName)=1
THEN LEFT(BusinessName,PATINDEX('[^0-9a-zA-Z]%',BusinessName))
ELSE BusinessName
END
END ASC;
END
ELSE
BEGIN
SELECT * FROM @Sorting
ORDER BY CASE WHEN PATINDEX('[0-9]%', BusinessName)=1
THEN LEFT(BusinessName,PATINDEX('[0-9]%',BusinessName))
ELSE CASE WHEN PATINDEX('[^0-9a-zA-Z]%', BusinessName)=1
THEN LEFT(BusinessName,PATINDEX('[^0-9a-zA-Z]%',BusinessName))
ELSE BusinessName
END
END DESC;
END