Voici une fonction que j'ai créée et qui est similaire à la "suppression des caractères non alphabétiques". Comment supprimer tous les caractères non alphabétiques de la chaîne dans SQL Server ?
Celui-ci utilise un classement sensible à la casse qui recherche activement une combinaison non-espace/lettre majuscule, puis utilise la fonction STUFF pour insérer l'espace. C'EST une UDF scalaire, donc certaines personnes diront immédiatement qu'elle sera plus lente que d'autres solutions. À cette notion, je dis, s'il vous plaît testez-la. Cette fonction n'utilise aucune donnée de table et ne boucle qu'autant de fois que nécessaire, elle vous offrira donc probablement de très bonnes performances.
Create Function dbo.Split_On_Upper_Case(@Temp VarChar(1000))
Returns VarChar(1000)
AS
Begin
Declare @KeepValues as varchar(50)
Set @KeepValues = '%[^ ][A-Z]%'
While PatIndex(@KeepValues collate Latin1_General_Bin, @Temp) > 0
Set @Temp = Stuff(@Temp, PatIndex(@KeepValues collate Latin1_General_Bin, @Temp) + 1, 0, ' ')
Return @Temp
End
Appelez-le comme ceci :
Select dbo.Split_On_Upper_Case('OneTwoThreeFour')
Select dbo.Split_On_Upper_Case('OneTwoThreeFour')
Select dbo.Split_On_Upper_Case('One')
Select dbo.Split_On_Upper_Case('OneTwoThree')
Select dbo.Split_On_Upper_Case('stackOverFlow')
Select dbo.Split_On_Upper_Case('StackOverFlow')