guys I've done this scalar function which gives me the first and last part of the string:
for example P0_x002_3345
will give me PO3345
but for ones like this:
PO_x002e_5567_3333
I need to get PO 5567 3333
and I only get
PO3333
ALTER function [dbo].[ExtractPONumber](@Text as varchar(8000))
returns varchar(8000)
as
begin
declare @Part1 varchar(8000);
declare @Part2 varchar(8000);
if LEN(@Text) > 0
begin
while (PATINDEX('%x002%',@Text) > 1)
begin
set @Text =
replace(@Text,
'x002',
'')
end
set @Part1 = CASE WHEN CHARINDEX('_',@Text) > 0 THEN LEFT(@Text,CHARINDEX('_',@Text)-1) ELSE NULL END
--LEFT(@Text,CHARINDEX('_',@Text)-1)
set @Part2 = REPLACE(@Text,@Part1,'')
set @Part2 = REVERSE(@Part2)
set @Part2 = CASE WHEN CHARINDEX('_',@Part2) > 0 then LEFT(@Part2, CHARINDEX('_',@Part2)-1) else @Part2 END
set @Part2 = REVERSE(@Part2)
--set @Text = @Part1 + REPLACE(@Part2,'_','')
end
return @Part1 + @Part2--REPLACE(@Part1 + @Part2,'_',' ')
end