sql >> データベース >  >> RDS >> Sqlserver

SQLで大文字で単語を分割する

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


    1. パート1– SuiteCRMをインストールし、そのデータベースをリバースエンジニアリングする方法

    2. MySQLチュートリアル–MySQLを学ぶための初心者向けガイド

    3. MicrosoftAccessがビジネスに役立つ7つの方法

    4. このクエリでページング(スキップ/テイク)機能を実装する