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!
 
Nyheter
Nya europeiska riktlinjer ska höja kvaliteten på avancerad MC-utbildning

I samband med MotoGP-racing...

SMC med och höjer MC-säkerheten i Europa

Sveriges MotorCyklister (SM...

Norton Motorcycles siktar på fyra nya modeller till 2026

Norton Motorcycles förbered...

TILLSTÅND KLART: GGN 2.0 KÖRS I HEJDEBY 2025

Nu är det klart att världen...

Norton Motorcycles siktar på fyra nya modeller till 2026

Norton Motorcycles förbered...

GB350S i fokus på Wheels and Waves 2025

Honda var tillbaka i Biarri...

En hyllning till mästaren!

Pressrelease från MV Agusta...

Vinnarhoj från Custom Bike Show

I nästa nummer av Allt om M...

Testhoj hämtas från Sulas MC

Vi åkte till Strängnäs för ...

Transportstyrelsen avvecklar appen Mina fordon

Foto: Andreas Johansson ...

Back
Top