これが私が作成した「アルファベット以外の文字の削除」に似た関数です。 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')