2016-08-30 12 views
9

Muszę zastąpić wiele znaków w ciągu znaków. Wynik nie może zawierać "&" ani żadnych przecinków.SQL Zamień wiele różnych znaków w ciągu znaków

Obecnie mam:

REPLACE(T2.[ShipToCode],'&','and') 

Ale w jaki sposób można umieścić wiele wartości?

Wielkie dzięki!

+2

użycie innego 'REPLACE':' REPLACE (replace (T2 [ShipToCode], '&', 'a'), '', ''). ' – Lamak

Odpowiedz

13

Wystarczy łańcuchowej je:

REPLACE(REPLACE(T2.[ShipToCode], '&', 'and'), ',', '') 
+0

Sprawia więc większego sensu. Dzięki. – coblenski

3

Użyliśmy funkcji zrobić coś podobnego, że przelotowe napisu, chociaż to było głównie do usuwania znaków, które nie były w „@ValidCharacters” strunowy. Przydało się to do usunięcia wszystkiego, czego nie chcieliśmy - zwykle nie alfanumerycznych znaków, choć myślę, że mieliśmy również miejsce w tym łańcuchu, miejsce, cytat, pojedynczy cytat i garstkę innych. To było naprawdę używane do usuwania niedrukowalnych postaci, które zazwyczaj wkradały się, więc może nie być idealne dla twojej sprawy, ale może dać ci kilka pomysłów.

CREATE FUNCTION [dbo].[ufn_RemoveInvalidCharacters] 
(@str VARCHAR(8000), @ValidCharacters VARCHAR(8000)) 
RETURNS VARCHAR(8000) 
BEGIN 
    WHILE PATINDEX('%[^' + @ValidCharacters + ']%',@str) > 0 
    SET @str=REPLACE(@str, SUBSTRING(@str ,PATINDEX('%[^' + @ValidCharacters + 
']%',@str), 1) ,'') 
    RETURN @str 
END 
Powiązane problemy