J'ai une variable dans SQL comme le ci-dessous lorsque j'imprime La sortie est comme ci-dessous p> Mon nom. Est ibrahim. ET. Je suis. À la recherche de. Une solution. aa p>
blockquote> C'est bien mais je veux maintenant supprimer tous les points, à l'exception du dernier point p> Ma sortie attendue ressemble au dessous p> La sortie est comme ci-dessous < / p> Mon nom est Ibrahim et je cherche une solution. aa p>
blockQuote> Comment puis-je y parvenir, i Google mais incapable de trouver quoi que ce soit p> p> @myvariable code> p>
4 Réponses :
Si le caractère . code> sera toujours à la fin, c'est aussi simple que: DECLARE @MyVariable AS VARCHAR(50) = 'My Name. Is Ibrahim. AND. I am. Searching For. A. Solution. aa';
SELECT REPLACE(LEFT(V.MyString, LEN(MyString) - (CI.I - 1)),'.','') + RIGHT(V.MyString,CI.I)
FROM (VALUES(@MyVariable),('This.is.a.string'))V(MyString)
CROSS APPLY (VALUES(NULLIF(CHARINDEX('.',REVERSE(V.MyString)),1)))CI(I);
Voici une option qui utilise simplement la manipulation de chaîne.
PRINT replace(left(@MyVariable, len(@MyVariable) - charindex(@FixFor, reverse(@MyVariable))), @FixFor, '') + substring(@MyVariable, len(@MyVariable) - charindex(@FixFor, reverse(@MyVariable)) + 1, 100)
et encore une autre option (plus simple, IMHO): Vous remplacez toutes les points de la partie de la chaîne avant le dernier point et concaténez-le à la partie de la chaîne de le dernier point à la fin. P> fraudeur: p> Si votre chaîne ne contient aucun point, il renvoie simplement la même chaîne. p> p>
charindex ('.', inverse (@myvariable)) code> vous donne l'index du dernier point. LI>
gauche (@myvariable, len (@myvariable) - charindex ('.', inverse (@myvariable))) code> vous donne la partie de la chaîne jusqu'au dernier point (inclus). li>
remplacer (à gauche (@myvariable, len (@myvariable) - charindex ('.', inverse (@myvariable))), '.' '' '') code> vous donne cette partie de la chaîne sans points. li>
droite (@myvariable, charindex ('.', inverse (@myvariable))) code> vous donne la dernière partie de la chaîne, y compris le dernier point. Li>
ul>
Dans les trois étapes, vous pouvez obtenir le résultat souhaité. Première variable trouve l'emplacement du dernier point, Deuxième variable Retirez les points, sauf le dernier, Troisiable variable trouve la chaîne après le dernier point, et deux variables sont concaténées pour la sortie souhaitée.
DECLARE @MyVariable AS VARCHAR(100) = 'My Name. Is Ibrahim. AND. I am. Searching For. A. Solution. aa'
DECLARE @FirstDot as int =LEN(@MyVariable)-PATINDEX('%.%',REVERSE(@MyVariable))
DECLARE @RemoveDotsBeforeLastDot as varchar(100) = REPLACE(SUBSTRING(@MyVariable,1,@FirstDot),'.',' ')
DECLARE @AfterLastDot as varchar(100) = SUBSTRING(@MyVariable,@FirstDot+1,LEN(@MyVariable))
select CONCAT(@RemoveDotsBeforeLastDot,@AfterLastDot)
La chaîne aura-t-elle toujours un
'.' Code> à la fin ou pourrait-il être moyen?ça peut être une corde moyenne
Eh bien, ce commentaire a changé pour être le contraire complet de ce que vous venez de dire ...
oui désolé je tape juste ça à la hâte, mon erreur
La chaîne d'échantillonnage que vous avez fournie est de plus de 50 caractères. alors tronque (ironiquement) au
'a.' code> est-ce intentionnel?