2016-08-30 1 views
9

Je dois remplacer plusieurs caractères dans une chaîne. Le résultat ne peut pas contenir de '&' ou de n'importe quelle virgule.SQL Remplacer plusieurs caractères différents dans la chaîne

J'ai actuellement:

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

Mais comment voulez-vous mettre plusieurs valeurs?

Merci beaucoup!

+2

utiliser un autre 'REPLACE':' REPLACE (REMPLACER (T2 [ShipToCode], '&', 'et'), '', ''.) ' – Lamak

Répondre

13

Vous avez juste besoin de les connecter en chaîne:

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

est tellement logique. Merci. – coblenski

3

Nous avons utilisé une fonction pour faire quelque chose de similaire qui boucle à travers la chaîne, bien que cela était surtout pour supprimer les caractères qui ne sont pas dans les « @ValidCharacters » chaîne. C'était utile pour supprimer tout ce que nous ne voulions pas - habituellement des caractères non alphanumériques, bien que je pense que nous avions aussi de l'espace, des guillemets, des guillemets simples et une poignée d'autres dans cette chaîne. Il était vraiment utilisé pour supprimer les caractères non imprimables qui ont tendance à se faufiler à certains moments, donc peut-être pas parfait pour votre cas, mais peut vous donner quelques idées.

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