Announcement

Collapse
No announcement yet.

String in Einzelteile zerlegen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • String in Einzelteile zerlegen

    Hallo zusammen,

    ich habe folgendes Problem zu lösen.

    Ich bekomme in Meine Datenbank eine Tabelle importiert in der jede Datei die auf dem V-Laufwerk liegt mit größe, Last_Access, etc. eingetragen ist.
    Es gibt auch eine Spalte wo der konkrete Pfadname aufgeführt ist.

    z.B.: V:\_general\Testdateien\Robocopy\Batch\Auswertung\ Befehle\Test

    Je nachdem wieviele Datein in diesem Ordner sind wird er auch dementspechend in der Liste aufgeführt.

    Mein Problem besteht darin einen View zu erzeugen der mir alle Pfade nach der 5ten Ebene abschneidet (im Beispiel wäre Ebene 5 Auswertung) und die Ebenen in Spalten schreibt, sodass folgendes dabei rauskommt.

    Ebene1 Ebene2 Ebene3 Ebene4 Ebene5
    _general Testdateien Robocopy Batch Auswertung

    Mittels einer Function habe ich den String schonmal zerlegt, allerdings bekomme ich die Ergebnisse dann untereinander was dann zu einer Fehlermeldung führt da Ebene1 ja öfters in der Liste auftauchen würde.

    Ich füge die Function mal mit ein falls es hilft. Vielleicht kann man diese auch so modifizieren das die Ebenene Nebeneinander stehen. Allerdings bleibt dann immernoch das Problem mit der Begrenzung auf Ebene 5.

    CREATE FUNCTION [dbo].[SplitTest](@String nvarchar(4000), @Delimiter char(1))
    returns @Results TABLE (Items nvarchar(4000))
    as
    begin
    declare @index int
    declare @slice nvarchar(4000)

    select @index = 1
    if @String is null return

    while @index != 0

    begin
    select @index = charindex(@Delimiter,@String)
    if @index !=0
    select @slice = left(@String,@index - 1)
    else
    select @slice = @String

    insert into @Results(Items) values(@slice)
    select @String = right(@String,len(@String) - @index)
    if len(@String) = 0 break
    end return
    end


    select *
    from dbo.SplitTest
    ((V:\_general\Testdateien\Robocopy\Batch\Auswertun g\Befehle\Test),'\')

    Danke und viele Grüße

    Marius
    Zuletzt editiert von Marius; 24.09.2010, 13:55.

  • #2
    Hinweis: Formatierung von SQL in Beiträgen
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Code:
      CREATE FUNCTION [dbo].[SplitTest](@String nvarchar(4000), @Delimiter char(1))
      returns @Results TABLE (Items nvarchar(4000))
      as
      begin
      	declare @index int, @i int
      	declare @slice nvarchar(4000)
      
      	select @index = 1, @i = 1
      
      	if @String is null return
      
      	while @index != 0
      	begin
      		select @index = charindex(@Delimiter,@String, @index)
      		if @i = 6 break
      		set @index = @index + 1
      		set @i = @i + 1
      	end 
      
      	if @index != 0
      		set @slice = left(@String, @index)
      
      	insert into @Results(Items) values(@slice)
      
      	return
      
      end
      go
      
      
      select *
      from dbo.SplitTest
      ('V:\_general\Testdateien\Robocopy\Batch\Auswertung\Befehle\Test','\')
      
      
      drop function [dbo].[SplitTest]

      Comment

      Working...
      X