Oto utworzona przeze mnie funkcja podobna do „usuwania znaków niealfabetycznych”. Jak usunąć wszystkie znaki niealfabetyczne z ciągu w SQL Server?
Ten używa sortowania z rozróżnianiem wielkości liter, które aktywnie wyszukuje kombinację bez spacji/wielkiej litery, a następnie używa funkcji STUFF do wstawienia spacji. To JEST skalarny UDF, więc niektórzy od razu powiedzą, że będzie wolniejszy niż inne rozwiązania. Do tego pomysłu, mówię, przetestuj to. Ta funkcja nie używa żadnych danych z tabeli i zapętla tylko tyle razy, ile jest to konieczne, więc prawdopodobnie zapewni bardzo dobrą wydajność.
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
Nazwij to tak:
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')