sql >> Database >  >> RDS >> Sqlserver

Splits woorden met een hoofdletter in sql

Hier is een functie die ik heb gemaakt die vergelijkbaar is met de "niet-alfabetische tekens verwijderen". Hoe verwijder je alle niet-alfabetische tekens uit de tekenreeks in SQL Server?

Deze gebruikt een hoofdlettergevoelige sortering die actief een niet-spatie/hoofdlettercombinatie zoekt en vervolgens de STUFF-functie gebruikt om de spatie in te voegen. Dit IS een scalaire UDF, dus sommige mensen zullen meteen zeggen dat het langzamer zal zijn dan andere oplossingen. Tegen dat idee zeg ik, test het alsjeblieft. Deze functie gebruikt geen tabelgegevens en wordt alleen zo vaak herhaald als nodig is, dus het zal u waarschijnlijk zeer goede prestaties opleveren.

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

Noem het zo:

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. Welke impact kunnen verschillende cursoropties hebben?

  2. Hoe TIMEDIFF() werkt in MariaDB

  3. PostgreSQL incrementele back-up en point-in-time herstel

  4. sqlplus-instructie vanaf de opdrachtregel