Her er en funktion, jeg har oprettet, der ligner "fjernelse af ikke-alfabetiske tegn". Hvordan fjerner man alle ikke-alfabetiske tegn fra streng i SQL Server?
Denne bruger en versalfølsom sortering, som aktivt opsøger en kombination af ikke-mellemrum/store bogstaver og derefter bruger STUFF-funktionen til at indsætte mellemrummet. Dette ER en skalær UDF, så nogle folk vil straks sige, at det vil være langsommere end andre løsninger. Til den forestilling, siger jeg, prøv den venligst. Denne funktion bruger ingen tabeldata og går kun så mange gange som nødvendigt, så den vil sandsynligvis give dig en meget god ydeevne.
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
Kald det sådan her:
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')