Ето функция, която създадох, която е подобна на "премахване на не азбучни знаци". Как да премахнете всички неазбучни знаци от низ в SQL Server?
Този използва съпоставяне, чувствително към главни букви, което активно търси комбинация без интервал/главна буква и след това използва функцията STUFF за вмъкване на интервал. Това Е скаларен UDF, така че някои хора веднага ще кажат, че ще бъде по-бавно от други решения. За тази идея, казвам, моля, тествайте я. Тази функция не използва никакви таблични данни и прави цикли само толкова пъти, колкото е необходимо, така че вероятно ще ви осигури много добра производителност.
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
Наречете го така:
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')