SQL Leerzeichen zwischen Wörtern entfernen

27/01/2011 - 13:55 von Bernd Konle | Report spam
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-
berechnenlàngst-vor-Ort-eingebaut

Bin für Eure Hilfe dankbar.

Viele Grüße

Bernd
 

Lesen sie die antworten

#1 Lutz Uhlmann
27/01/2011 - 14:18 | Warnen spam
Am 27.01.2011 13:55, schrieb Bernd Konle:
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-
berechnenlàngst-vor-Ort-eingebaut



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

Ähnliche fragen