Hi
I thought I would add in a LIKE query to see how that compared. It wasn't as bad as I thought it would be.
SELECT @StartTime = GETDATE();
SELECT @HOLDER = ID
FROM #testEnvironment
WHERE yourData like '%.%' and yourData not like '%.%.%';
SELECT @Duration = CONVERT(CHAR(12),GETDATE()-@StartTime,114);
RAISERROR('Duration for LIKE = %s',0,1,@Duration) WITH NOWAIT;
DBCC FREEPROCCACHE WITH NO_INFOMSGS;
DBCC DROPCLEANBUFFERS WITH NO_INFOMSGS;
SELECT @StartTime = GETDATE();
SELECT @HOLDER = ID
FROM #testEnvironment
WHERE yourData COLLATE Latin1_General_BIN2 like '%.%' and yourData COLLATE Latin1_General_BIN2 not like '%.%.%';
SELECT @Duration = CONVERT(CHAR(12),GETDATE()-@StartTime,114);
RAISERROR('Duration for LIKE = %s',0,1,@Duration) WITH NOWAIT;
And got the following
Duration for CHARINDEX = 00:00:09:103
Duration for LEN = 00:00:10:790
Duration for CHARINDEX with COLLATE = 00:00:06:507
Duration for PARSENAME = 00:00:07:717
Duration for LIKE = 00:00:10:703
Duration for LIKE with COLLATE = 00:00:06:517