Berikut adalah fungsi yang saya buat yang mirip dengan "menghapus karakter non-abjad". Bagaimana cara menghapus semua karakter non-abjad dari string di SQL Server?
Yang ini menggunakan susunan peka huruf besar/kecil yang secara aktif mencari kombinasi non-spasi/huruf besar dan kemudian menggunakan fungsi STUFF untuk menyisipkan spasi. Ini ADALAH UDF skalar, jadi beberapa orang akan segera mengatakan bahwa ini akan lebih lambat daripada solusi lain. Untuk gagasan itu, saya katakan, silakan mengujinya. Fungsi ini tidak menggunakan data tabel apa pun dan hanya mengulang sebanyak yang diperlukan, sehingga kemungkinan besar akan memberi Anda kinerja yang sangat baik.
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
Sebut saja seperti ini:
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')