PATINDEX
to dobry trop możesz napisać funkcje:
CREATE FUNCTION [dbo].[parseTicketText]
(@text varchar(200))
RETURNS varchar(200)
AS
BEGIN
declare @result varchar(200)
set @result = ''
while patindex('%[0-9][0-9].[0-9][0-9].[0-9][0-9]%',@text)>0
begin
set @result = @result + ' / ' + substring(@text,patindex('%[0-9][0-9].[0-9][0-9].[0-9][0-9]%',@text),8)
set @text = STUFF(@text, patindex('%[0-9][0-9].[0-9][0-9].[0-9][0-9]%',@text), 8, '')
end
RETURN substring(@result,4,200)
END
GO
i użyc do otrzymania 2 outputu:
SELECT ticket,[dbo].[parseTicketText](TEXT) FROM TICKET
co do outputu 1 to jak masz wersje >=2016 to uzyj STRING_SPLIT
https://docs.microsoft.com/en[...]sact-sql?view=sql-server-2017
Możesz też napisac funkcje:
CREATE FUNCTION [dbo].[parseTicketTextToRows]
(@text varchar(200))
RETURNS @RtnValue table
(
Data varchar(8) NOT NULL
)
AS
BEGIN
while patindex('%[0-9][0-9].[0-9][0-9].[0-9][0-9]%',@text)>0
begin
insert into @RtnValue values (substring(@text,patindex('%[0-9][0-9].[0-9][0-9].[0-9][0-9]%',@text),8))
set @text = STUFF(@text, patindex('%[0-9][0-9].[0-9][0-9].[0-9][0-9]%',@text), 8, '')
end
RETURN
END
GO
i użyć w zapytaniu:
select ticket, f.data as Text from ticket
cross apply [dbo].[parseTicketTextToRows](ticket.text) f