String split SQL-ben, másodszor

Korábbi bejegyzésemben bemutattam egy agyament string splitet, tisztán sql lekérdezéssel megoldva. Én azért annyira nem iszonyodok a procedurális módszerektől, főleg, ha azok 100-szor átláthatóbb kódot eredményeznek, mint ama perverz példa. Én valahogy így spliteltem legutóbb egy feladat kapcsán:

declare @path nvarchar(2048)
set @path = ‘/alma/korte/barack’

declare @slash_pos int, @next_slash int
declare @path_component nvarchar(256)
declare @path_prepared nvarchar(2050)
set @slash_pos = 1

if (right(@path, 1) != ‘/’)
 set @path_prepared = @path + ‘/’
else
 set @path_prepared = @path

while(@slash_pos < len(@path))
begin
 set @next_slash = charindex(’/', @path_prepared, @slash_pos+1)
 set @path_component = substring(@path_prepared, @slash_pos+1, @next_slash-@slash_pos-1)
 set @slash_pos = @next_slash

 print @path_component
end

Nekem ez ezerszer átláthatóbb, mint a táblás-hekkelős megoldás.

Leave a Reply