J'ai une colonne avec des valeurs telles que ceci: code pour convertir 119.305.1983984.1 au 1.1983984.305.119 est: p> ## codel ##
1-829549-305-117
1-1196585-305-119
1-1983984-305-119 // this record has changed
1-224594-305-121
1-1999987-305-121
1-113416-306-122 // this record has changed
1-158059-305-122
3 Réponses :
Voici comment vous pouvez diviser votre chaîne en fonction de "". et utilisez les valeurs séparément: ref: Comment puis-je diviser une chaîne afin que je puisse accéder à l'élément x? p> p>
Je ne recommande pas vraiment un pendant code> boucle. Il existe de meilleures solutions à base de données pour diviser les données dans SQL Server. La question que vous avez liée a en fait avoir beaucoup plus de upvotes sur la réponse en utilisant parsename code>; que l'OP fait (bon?) Utilisation de.
il suffit de remplacer le retours: strong> p> Si vous avez SQL Server 2017, alors vous pouvez utiliser si vous voulez le Séparateur pour être toujours - code> avec . code>, car parsename () code> ne fonctionne qu'avec code>, pas '-' code>
concat_ws () code> strong> comme p>
'-' code> alors pas besoin de sep code>, juste directement '-' code> p> p> p> p> p> p> P> P> P>
Vous devez juste ajouter ce code
SELECT [Codel],
case WHEN (CHARINDEX('.',[Codel]) > 0) then
CONCAT(PARSENAME([Codel], 1), '-',
PARSENAME([Codel], 2), '-',
PARSENAME([Codel], 3), '-',
PARSENAME([Codel], 4))
else [Codel] end
true_template
FROM [TestDB].[dbo].[CodelTbl]
Alors, quel est le problème réel?
Quelle est la version du serveur SQL que vous utilisez?
Voulez-vous faire la même chose avec ceux avec des tirets
- code>?Vous semblez avoir oublié la chose la plus importante pour poser une question; poser une question. Qu'est-ce qui est à toi?
À une supposition, peut-être i>, ils veulent changer les positions des éléments lorsque la valeur se termine par
'1' code>, plutôt que de changer le. < / code> 's à- code>?Convertir code> est définitivement le mauvais mot ici cependant.Il utilise
SQL Server 2012 code> ou plus récent puisqu'il utiliseconcat code>.