2017-10-18 1 views
1

J'ai des difficultés à répéter et à remplacer tout ce qui se trouve entre deux caractères dans une chaîne à l'aide de MS SQL 2008 R2. J'essaie actuellement de tout extraire entre les caractères^et ~. J'utilise le code SQL suivant:MS SQL 2008 - Itérer et remplacer tout entre deux caractères

DECLARE @string VARCHAR(255) = '0123^Hello~456^Filler Text~789^Even more filler text~' 

SELECT STUFF(@string, PATINDEX('%^%',@string), PATINDEX('%~%',@string)+1 - PATINDEX('%^%',@string), replace(replace(@string, '^', ''), '~', '')) 

Je souhaite que la sortie soit "Texte de remplissage Hello Encore plus de texte de remplissage". Des idées de ce que je fais mal?

+3

Bien que vous puissiez écrire une fonction pour ce faire, SQL Server n'est pas le meilleur outil pour le travail. –

Répondre

0

En tant que votre sortie ressemble à lire uniquement les valeurs Alpha de Sting alors vous pouvez essayer ci-dessous SQL Commande:

DECLARE @str NVARCHAR(MAX); 
DECLARE @counter INT; 
SET @str = '0123^Hello~456^Filler Text~789^Even more filler text~'; 
SET @counter = 0; 
WHILE @counter <= 57 
    BEGIN 
     SET @str = REPLACE(@str, CHAR([email protected]), ' '); 
     SET @counter = @counter + 1; 
    END; 
SELECT LTRIM(RTRIM(REPLACE(REPLACE(@str, '^', ''), '~', ''))); 

Sortie:

Hello Filler Text Even more filler text