Ecco una funzione che ho creato che è simile alla "rimozione di caratteri non alfabetici". Come rimuovere tutti i caratteri non alfabetici dalla stringa in SQL Server?
Questo utilizza un confronto case sensitive che cerca attivamente una combinazione non-spazio/lettere maiuscole e quindi utilizza la funzione STUFF per inserire lo spazio. Questa è una UDF scalare, quindi alcune persone diranno immediatamente che sarà più lenta di altre soluzioni. A quella nozione, dico, per favore provalo. Questa funzione non utilizza alcun dato di tabella e si ripete solo tutte le volte necessarie, quindi probabilmente ti darà prestazioni molto buone.
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
Chiamalo così:
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')