This should work (and be safe). As long as there are no strings with three # in them.DECLARE @foo TABLE ( [val] VARCHAR(255) )INSERT @foo ([val])VALUES ('TR#ABC#10/12/2011') , ('tr') , ('TR##fsafasf') , ('#asdasda#') , ('TR#asfasfasfasf')SELECT [val] , CASE WHEN CHARINDEX('#', [sval]) = 0 THEN NULL ELSE LEFT([sval], CHARINDEX('#', [sval]) - 1) END AS [StrippedVal]FROM ( SELECT [val] AS [val] , CASE WHEN CHARINDEX('#', [val]) = 0 THEN NULL ELSE RIGHT([val], LEN([val]) - CHARINDEX('#', [val])) END AS [sval] FROM @foo ) AS r
Results(5 row(s) affected)val StrippedVal-------------------- --------------------TR#ABC#10/12/2011 ABCtr NULLTR##fsafasf #asdasda# asdasdaTR#asfasfasfasf NULL(5 row(s) affected)
Charlie===============================================================Msg 3903, Level 16, State 1, Line 1736The ROLLBACK TRANSACTION request has no corresponding BEGIN TRANSACTION