Đây là một chức năng tôi đã tạo tương tự như "loại bỏ các ký tự không phải chữ cái". Làm cách nào để loại bỏ tất cả các ký tự không phải chữ cái khỏi chuỗi trong SQL Server?
Điều này sử dụng đối chiếu phân biệt chữ hoa chữ thường, chủ động tìm kiếm sự kết hợp không phải khoảng trắng / chữ cái viết hoa và sau đó sử dụng hàm STUFF để chèn khoảng trắng. Đây là một UDF vô hướng, vì vậy một số người sẽ ngay lập tức nói rằng nó sẽ chậm hơn các giải pháp khác. Tôi nói, theo quan niệm đó, hãy thử nghiệm nó. Hàm này không sử dụng bất kỳ dữ liệu bảng nào và chỉ lặp lại nhiều lần khi cần thiết, vì vậy nó có thể sẽ mang lại cho bạn hiệu suất rất tốt.
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
Gọi nó như thế này:
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')