I'm thinking udf...needs some tweaking, and I don't understand the error, based on the test code.....USE NorthwindGOCREATE TABLE myTable99(Col1 varchar(255))GOSET NOCOUNT ONINSERT INTO myTable99(Col1)SELECT 'name: johnson email: firstname: philip need: doc 12' UNION ALLSELECT 'name: johnson email: pjohnson@yahoo.com firstname: philip need: doc 13'GOCREATE FUNCTION udf_GetString(@Col1 varchar(255), @tag varchar(255))RETURNS varchar(255)AS BEGINDECLARE @str varchar(255) SELECT @str = SUBSTRING(@Col1 , CHARINDEX(@tag,@Col1)+1+LEN(@tag) , CHARINDEX(' ',Col1,CHARINDEX(@tag,@Col1)+1+LEN(@tag))-(CHARINDEX(@tag,@Col1)+1+LEN(@tag))) FROM myTable99 RETURN @str ENDGOSELECT dbo.udf_GetString(Col1,'firstname:') , dbo.udf_GetString(Col1,'email:') , dbo.udf_GetString(Col1,'need:') , Col1FROM myTable99GODECLARE @tag varchar(255)SELECT @tag = 'firstname:' SELECT SUBSTRING(Col1 , CHARINDEX(@tag,Col1)+1+LEN(@tag) , CHARINDEX(' ',Col1,CHARINDEX(@tag,Col1)+1+LEN(@tag))-(CHARINDEX(@tag,Col1)+1+LEN(@tag))) FROM myTable99SELECT @tag = 'email:' SELECT SUBSTRING(Col1 , CHARINDEX(@tag,Col1)+1+LEN(@tag) , CHARINDEX(' ',Col1,CHARINDEX(@tag,Col1)+1+LEN(@tag))-(CHARINDEX(@tag,Col1)+1+LEN(@tag))) FROM myTable99SELECT @tag = 'need:' SELECT SUBSTRING(Col1 , CHARINDEX(@tag,Col1)+1+LEN(@tag) , CHARINDEX(' ',Col1,CHARINDEX(@tag,Col1)+1+LEN(@tag))-(CHARINDEX(@tag,Col1)+1+LEN(@tag))) FROM myTable99GOSET NOCOUNT OFFDROP FUNCTION udf_GetStringDROP TABLE myTable99GOBrett8-)