SQL Replace

McB

Moderat(or)
Gick med
6 Mar 2003
Ort
Göteborg
Hoj
Senare...
Jag har en stored procedure som hämtar data från en databas och stuvar in den i en annan databas. Ser ut såhär:

Code:
BEGIN
			SET @Serialnumber=UPPER(@Serialnumber)		
			UPDATE Tab_Loggbok SET 
				Serienr=@Serialnumber, 
				RLageH_W=@RStateHW, 
				Huvudfel=@MainFailureFaultyProduct, 
				Position=@MainFailurePosition, 
				Felsokning=@MainFailureSymptomDescription, 
				Felbeskrivning=@MainFailureCauseDescription,
				Atgard=@MainFailureAction,
				FrRepDat=CONVERT(VARCHAR, GETDATE(), 112) 
			WHERE
				RCnr=@RCID
	
END

Allt funkar bra, men jag skulle vilja skala bort alla mellanslag från variabeln @MainFailureFaultyProduct när den skickas vidare. Mellanslagen ligger aldrig i början eller slutet, så jag kan inte använda trim. Har försökt med detta...

Code:
Huvudfel=REPLACE(@MainFailureFaultyProduct,' ','')

...Men mellanslagen är kvar. Är det överhuvudtaget möjligt att använda replace-funktionen på lokala variabler?

Förslag?
 
Du måste skifta efter alla nästkommande tecken i strängen, så nej. Replace går inte att använda.

Skapa en ny dit du plockar ut allt förutom mellanslag.
 
morlock skrev:
2314000 Du måste skifta efter alla nästkommande tecken i strängen, så nej. Replace går inte att använda.

Skapa en ny dit du plockar ut allt förutom mellanslag.

Fan också. Går det inte på något annat vis? Vill inte in och härja i någon annans kod bara för att hänvisa till en annan sp.
 
morlock skrev:
2314747 Kan du inte ersätta mellanslagen med ett punkt eller annat tecken då?

Nej, dessvärre inte. Om jag inte kan få bort dem får de helt enkelt vara kvar. Jag meddelar att det kostar för mycket att mickla bort dem. :)

Tack för hjälpen i alla fall!
 
Testade lite i en av mina databaser. Det funkar hur bra som helst.

declare @sTitle varchar(20)
set @sTitle = 'En rad med mellanslag'
update node set title=replace(@sTitle, ' ', '') where node_id = 4


Antar att det är SQL Server vi pratar om (med tanke på getdate)?

Edit:
För övrigt borde du kunna anropa replace precis som du gör med upper i set-raden innan updaten. Eller också flyttar du ner upper till själva updaten

BEGIN
UPDATE Tab_Loggbok SET
Serienr=UPPER(@Serialnumber),
...
 
Last edited:
Zormin skrev:
2316283 Testade lite i en av mina databaser. Det funkar hur bra som helst.

declare @sTitle varchar(20)
set @sTitle = 'En rad med mellanslag'
update node set title=replace(@sTitle, ' ', '') where node_id = 4


Antar att det är SQL Server vi pratar om (med tanke på getdate)?

Edit:
För övrigt borde du kunna anropa replace precis som du gör med upper i set-raden innan updaten. Eller också flyttar du ner upper till själva updaten

BEGIN
UPDATE Tab_Loggbok SET
Serienr=UPPER(@Serialnumber),
...

Skall prova detta imorgon. Tack!
 
Måste ha glömt något när jag provade första gången, för nu gjorde jag exakt likadant...

Code:
Huvudfel=REPLACE(@MainFailureFaultyProduct, ' ', ''),

Och det funkade galant!
 
Back
Top