6
votes

Remplacer uniquement la nième instance de caractère

Y a-t-il un moyen de remplacer la 1ère instance d'un caractère dans une chaîne avec quelque chose par exemple.

&1402 WSN NIAMLAB^teertS htimS 005


1 commentaires

Vous avez posé de nombreuses questions, les gens vous ont répondu. Veuillez contribuer en nous disant quelle réponse fonctionne pour vous. Pour chacune de vos questions passées, cochez une des réponses.


3 Réponses :


0
votes

Code non testé: xxx

Cependant, si le personnage n'existe pas, vous voudriez entourer cela avec un if / puis sur charindex ('^', '^ 1402 WSN Niamlab ^ Teerts htims 005 ')! = 0


0 commentaires

3
votes

Bien que l'exemple de votre question soit de savoir comment remplacer uniquement la 1ère occurrence d'un caractère, votre titre indique que vous souhaitez remplacer la nième occurrence qui est un peu plus délicate.

J'ai écrit une fonction de temps en arrière pour trouver la nième occurrence d'un personnage dans une chaîne. Vous pouvez utiliser que pour construire une chaîne avec la sous-chaîne. P>

--Actual Code
DECLARE @loc INT
DECLARE @MyStr VARCHAR(200)
DECLARE @replacement CHAR(1)

SET @MySTr = '^1402 WSN NIAMLAB^teertS htimS 005'
SET @replacement = '$'
SELECT @loc = dbo.CHARINDEX3('^',@MyStr, 2)

SELECT SUBSTRING(@myStr, 1, @loc-1) + @replacement + SUBSTRING(@MyStr, @loc + 1, LEN(@MyStr)-@loc)


0 commentaires

21
votes

Pour remplacer la première instance d'un personnage, je recommanderais l'utilisation du code> (code> et charindex code> fonctions. Stuff Code> Insère une chaîne dans une autre chaîne. Il supprime une longueur spécifiée de caractères dans la première chaîne en position de départ, puis insère la deuxième chaîne dans la première chaîne en position de départ. xxx pré>

Notez que vous pouvez également utiliser Stuff code> dans une requête comme suit: P>

SELECT STUFF(<yourcolumn>, CHARINDEX('^', <yourcolumn>), 1, '&')
FROM <yourtable>


0 commentaires