2017-10-21 58 views
0

Bonne nuit, les gens. La question est assez claire: j'ai besoin d'ajouter 2 caractères spécifiques au milieu d'une chaîne.SQL Server - Comment puis-je ajouter 1 ou plusieurs caractères spécifiques au milieu d'une chaîne?

Exemple:

(la façon dont il est maintenant)

ID 

12345678  
23456789  
34567891  
45678912 

(la façon dont je dois être)

ID 

12-34567-8  
23-45678-9  
34-56789-1  
45-67891-2 

J'ai essayé avec STUFF et CONCAT mais pas de dés .

+3

Pouvez-vous nous montrer le code 'STUFF' et' CONCAT'? – Moseleyi

+0

Merci pour la réponse. Je l'ai essayé avec ceci: DECLARE @String NVARCHAR (30) = '20952634500' SELECT STUFF (STUFF (@ String, 3,0, '-'), 11,1, '-') Mon problème est que j'ai environ 300 lignes pour éditer/ajouter ce caractère spécial. Existe-t-il un moyen automatique de faire cela? – tankard

Répondre

4

Vous pouvez utiliser STUFF ou même format() si 2012+

qui suit suppose ID est pas INT.

Exemple

Declare @YourTable Table ([ID] varchar(50)) 
Insert Into @YourTable Values 
(12345678) 
,(23456789) 
,(34567891) 
,(45678912) 

Select * 
     ,ViaFormat = format(cast(ID as int),'00-00000-0') 
     ,ViaStuff = stuff(stuff(ID,8,0,'-'),3,0,'-') 
From @YourTable 

Retours

ID   ViaFormat ViaStuff 
12345678 12-34567-8 12-34567-8 
23456789 23-45678-9 23-45678-9 
34567891 34-56789-1 34-56789-1 
45678912 45-67891-2 45-67891-2 
0

@John Cappeletti Merci pour votre réponse! Je ne peux pas expliquer pourquoi, mais il semble que mon SSMS (SQL Server 2008 R2) n'a pas aimé que 2 STUFF soient exécutés en séquence. Il suffit de les diviser en 2 phrases et voila ... résolu!

Nous sommes désolés pour tout inconvénient causé par ma question.