Discussion:
SQL Leerzeichen zwischen Wörtern entfernen
(zu alt für eine Antwort)
Bernd Konle
2011-01-27 12:55:31 UTC
Permalink
Hallo beisammen,

weiss mir grad keinen Rat mehr und finde nichts genaues im Internet.
Ich bekomme täglich .txt files die ich über Nacht in unser SQL
importiere.
Nun habe ich das Problem dass ich bei einer Kommentar-Spalte
Leerzeichen entfernen möchte die aber nie gleich viele sind.

609 buchen > dann berechnen längst
vor Ort eingebaut

Zwischen "berechnen" und "längst" sollte ich nun nur 1 Leerzeichen
haben.
Habe sämtliches mit Replace schon ausprobiert und char(10) und
char(13) ect.....

Bei dieser Funktion werden leider alle Leerzeichen entfernt -->
replace(KOMMENTAR,' ','') und als Ergebnis angezeigt:
609buchen>dannberechnenlängstvorOrteingebaut
Wenn ich beim ersetzen z.B. '-' ein Leerzeichen oder ein Minus angebe
sieht es so aus: 609-buchen->-dann-
berechnen---------------------------------längst-vor-Ort-eingebaut
--> hat also nichts gebracht.

Bin für Eure Hilfe dankbar.

Viele Grüße

Bernd
Lutz Uhlmann
2011-01-27 13:18:18 UTC
Permalink
Post by Bernd Konle
Habe sämtliches mit Replace schon ausprobiert und char(10) und
char(13) ect.....
Bei dieser Funktion werden leider alle Leerzeichen entfernt -->
609buchen>dannberechnenlängstvorOrteingebaut
Wenn ich beim ersetzen z.B. '-' ein Leerzeichen oder ein Minus angebe
sieht es so aus: 609-buchen->-dann-
berechnen---------------------------------längst-vor-Ort-eingebaut
--> hat also nichts gebracht.
Du mußt zwei Leerzeichen durch eins ersetzen!
REPLACE(KOMMENTAR, ' ', ' ')

Und das rekursiv bis keine "zwei Leerzeichen" mehr vorhanden sind

CREATE FUNCTION dbo.ReplaceSpaces
(
@sText NVARCHAR(MAX)
)
RETURNS nvarchar(MAX)
AS
BEGIN
DECLARE @sNeuText NVARCHAR(MAX)
SET @sNeuText = REPLACE(@sText, N' ', N' ')
IF CHARINDEX(N' ', @sNeuText)>0
BEGIN
SET @sNeuText = dbo.ReplaceSpaces(@sNeuText)
END
RETURN @sNeuText
END
GO

SELECT dbo.ReplaceSpaces(N'khghkg kgdfkdshfgs hdsfkdgfshg
k sgfhsg hgsfkhdghfg hgshfgdsfg kghgjh')
GO

khghkg kgdfkdshfgs hdsfkdgfshg k sgfhsg hgsfkhdghfg hgshfgdsfg kghgjh
Bernd Konle
2011-01-27 14:46:16 UTC
Permalink
Post by Lutz Uhlmann
Post by Bernd Konle
Habe sämtliches mit Replace schon ausprobiert und char(10) und
char(13) ect.....
Bei dieser Funktion werden leider alle Leerzeichen entfernt -->
609buchen>dannberechnenlängstvorOrteingebaut
Wenn ich beim ersetzen z.B. '-' ein Leerzeichen oder ein Minus angebe
sieht es so aus: 609-buchen->-dann-
berechnen---------------------------------längst-vor-Ort-eingebaut
-->  hat also nichts gebracht.
Du mußt zwei Leerzeichen durch eins ersetzen!
REPLACE(KOMMENTAR, '  ', ' ')
Und das rekursiv bis keine "zwei Leerzeichen" mehr vorhanden sind
CREATE FUNCTION dbo.ReplaceSpaces
(
)
RETURNS nvarchar(MAX)
AS
BEGIN
     BEGIN
     END
END
GO
SELECT dbo.ReplaceSpaces(N'khghkg        kgdfkdshfgs   hdsfkdgfshg
   k sgfhsg  hgsfkhdghfg hgshfgdsfg     kghgjh')
GO
khghkg kgdfkdshfgs hdsfkdgfshg k sgfhsg hgsfkhdghfg hgshfgdsfg kghgjh
Genial Lutz,

herzlichen Dank, funktioniert einwandfrei :-)))))

Viele Grüße

Bernd
Alexander M. Trümper
2011-02-23 20:06:15 UTC
Permalink
Post by Lutz Uhlmann
Post by Bernd Konle
Habe sämtliches mit Replace schon ausprobiert und char(10) und
char(13) ect.....
Bei dieser Funktion werden leider alle Leerzeichen entfernt -->
609buchen>dannberechnenlängstvorOrteingebaut
Wenn ich beim ersetzen z.B. '-' ein Leerzeichen oder ein Minus angebe
sieht es so aus: 609-buchen->-dann-
berechnen---------------------------------längst-vor-Ort-eingebaut
--> hat also nichts gebracht.
Du mußt zwei Leerzeichen durch eins ersetzen!
REPLACE(KOMMENTAR, ' ', ' ')
Und das rekursiv bis keine "zwei Leerzeichen" mehr vorhanden sind
CREATE FUNCTION dbo.ReplaceSpaces
(
@sText NVARCHAR(MAX)
)
RETURNS nvarchar(MAX)
AS
BEGIN
BEGIN
END
END
GO
SELECT dbo.ReplaceSpaces(N'khghkg kgdfkdshfgs hdsfkdgfshg k sgfhsg
hgsfkhdghfg hgshfgdsfg kghgjh')
GO
khghkg kgdfkdshfgs hdsfkdgfshg k sgfhsg hgsfkhdghfg hgshfgdsfg kghgjh
Eine schöne Inspiration, vielen Dank :-)

Lesen Sie weiter auf narkive:
Loading...