Dziekuję.
Tak, tekst startowy to xml o datatype = text.
Przyjrzę się zatem tym funckjom - czy Twoim zdaniem będzie to łatwiejsze rozwiazanie?
Chciałym jednak już dokończyć opcję z klasycznym wyszukiwaniem - jest już blisko oczekiwanego efektu:
nie pojawiają sie błędy jednak jako error traktowana jest zbyt duża liczba dat, co w efekcie zwraca za małą liczbę danych - przykład poniżej.
Czy można jakoś zliberalizować przypisywanie jako error?
**
Funkcja poprzednia, zły format ale dobra skuteczność:**
1322062 44.10.05 5/17/2018 1:14:25 PM
1322062 30.01.41 0 49 5/16/2018 9:11:
1322062 99.05.56 0 48 5/16/2018 9:04:
1322062 13.FF.FF 0 47 5/16/2018 2:12:
1322062 31.13.01 5/15/2018 4:46:49 AM
1322062 13.A3.D3 5 5/7/2018 5:59:06 AM
1322062 13.A3.D3 4 5/2/2018 6:20:55 AM
1322062 31.13.01 4/26/2018 12:46:48 AM
1322062 10.99.40 4/23/2018 1:41:38 PM
1322062 54.14.00 4/23/2018 4:39:05 AM
1322111 13.64.a1 Uhr Oeffnungszeiten
1322277 01.06.18 **** CASE_SUMMARY:
1322277 13.B2.D2 0 01.06.2018 11:54:20
1322277 13.B2.D2 9 01.06.2018 11:42:20
1322277 13.B2.D2 8 01.06.2018 11:41:44
1322277 13.B2.D2 7 01.06.2018 11:38:23
1322277 13.B2.D2 6 01.06.2018 11:37:33
1322277 13.B2.D2 5 01.06.2018 11:36:25
1322485 44.01.1E 50 5/4/2018 10:36:14
1322485 31.03.36 49 3/12/2018 8:47:16
**
Funkcja obecna, pięknie wyłuskuje ale dużo omija:**
1322062 44.10.05 5/17/2018 1:14:25 PM
1322062 30.01.41
1322062 99.05.56
1322062 13.FF.FF
1322062 31.13.01 5/15/2018 4:46:49 AM
1322062 13.A3.D3 5/7/2018 5:59:06 AM
1322062 13.A3.D3 5/2/2018 6:20:55 AM
1322062 31.13.01 4/26/2018 12:46:48 AM
1322062 10.99.40 4/23/2018 1:41:38 PM
1322062 54.14.00 4/23/2018 4:39:05 AM
1322111 13.64.a1
1322277 01.06.18
1322277 13.B2.D2
1322277 13.B2.D2
1322277 13.B2.D2
1322277 13.B2.D2
1322277 13.B2.D2
1322277 13.B2.D2
1322485 44.01.1E
1322485 31.03.36
Jeszcze jedna rzecz, pattern musiałem trochę zmienić (spacja przed i po), dlatego zmieniłem wyszukiwanie z 8 na 9 znaków:
ALTER FUNCTION [dbo].[fParseALLToRows5]
(@text VARCHAR(max))
RETURNS @RtnValue TABLE
(
error VARCHAR(9) NOT NULL
,[TIME] VARCHAR(30) NOT NULL
)
AS
BEGIN
DECLARE @i AS INTEGER
DECLARE @error VARCHAR(100)
DECLARE @Time VARCHAR(300)
SET @i = patindex('% [0-9][0-9].. %',@text)
while @i>0
BEGIN
SET @error = SUBSTRING(@text,@i,9)
SET @Time = SUBSTRING(@text,@i-28,21)
SET @Time = CASE WHEN patindex('% [pa]m%',@Time) > 9 THEN
SUBSTRING(@Time,CASE WHEN charindex(' ',@Time)>9 THEN 1 ELSE charindex(' ',@Time)+1 END,patindex('% [pa]m%',@Time)-CASE WHEN charindex(' ',@Time)>9 THEN 0 ELSE charindex(' ',@Time) END+3)
ELSE
''
END
INSERT INTO @RtnValue VALUES (@error,@Time)
SET @text = STUFF(@text, patindex('% [0-9][0-9].. %',@text), 9, '')
SET @i = patindex('% [0-9][0-9].. %',@text)
END
RETURN
END