Me encontre una función en TSQL que hace un “split” y le hice unas modificaciones para su posterior uso:
CREATE FUNCTION [dbo].[fn_split]
(
@textInfo nvarchar(MAX),
@delimiter NCHAR(1)
)
RETURNS @textRow TABLE (POSITION INT, part nvarchar(MAX) )
AS
BEGIN
IF @textInfo IS NULL RETURN
DECLARE @iStart INT,
@iPos INT,
@iRow INT
SET @iRow = 0
IF SUBSTRING( @textInfo, 1, 1 ) = @delimiter
BEGIN
SET @iStart = 2
INSERT INTO @textRow
VALUES( @iRow, NULL )
END
ELSE
BEGIN
SET @iStart = 1
END
while 1=1
BEGIN
SET @iRow = @iRow + 1
SET @iPos = charindex( @delimiter, @textInfo, @iStart )
IF @iPos = 0
SET @iPos = len( @textInfo )+1
IF @iPos - @iStart > 0
INSERT INTO @textRow
VALUES (@iRow, SUBSTRING( @textInfo, @iStart, @iPos-@iStart ))
ELSE
INSERT INTO @textRow
VALUES(@iRow, NULL )
SET @iStart = @iPos+1
IF @iStart > len( @textInfo )
break
END
RETURN
END |
CREATE FUNCTION [dbo].[fn_split]
(
@textInfo nvarchar(max),
@delimiter nchar(1)
)
RETURNS @textRow TABLE (position int, part nvarchar(max) )
AS
BEGIN
if @textInfo is null return
declare @iStart int,
@iPos int,
@iRow int
set @iRow = 0
if substring( @textInfo, 1, 1 ) = @delimiter
begin
set @iStart = 2
insert into @textRow
values( @iRow, null )
end
else
begin
set @iStart = 1
end
while 1=1
begin
set @iRow = @iRow + 1
set @iPos = charindex( @delimiter, @textInfo, @iStart )
if @iPos = 0
set @iPos = len( @textInfo )+1
if @iPos - @iStart > 0
insert into @textRow
values (@iRow, substring( @textInfo, @iStart, @iPos-@iStart ))
else
insert into @textRow
values(@iRow, null )
set @iStart = @iPos+1
if @iStart > len( @textInfo )
break
end
RETURN
END
La manera que la utiliza es:
DECLARE @mainTextRow TABLE (POSITION INT, part nvarchar(MAX) )
INSERT INTO @mainTextRow
SELECT * FROM dbo.[fn_split](@fileTxt,'\n')
SELECT * FROM @textRow WHERE POSITION = 3 |
DECLARE @mainTextRow TABLE (position int, part nvarchar(max) )
INSERT INTO @mainTextRow
SELECT * FROM dbo.[fn_split](@fileTxt,'\n')
select * from @textRow where position = 3
Analista/Desarrollador y cofundador de QBit Mexhico. Tecnologías utilizadas Android, Java (EJB, Servlets, Faces, Groovy & Grails, Maven, Swing), .Net (C#, VB, ASP, MVC), Delphi, Spring, Hibernate, DTSx, Oracle, T-SQL, Firebird, MySQL, MongoDB, NodeJs, ReactJs (Flux). Sistemas Operativos Mac, Ubuntu y Windows.