sql >> Databasteknik >  >> RDS >> Sqlserver

Dela ord med stor bokstav i sql

Här är en funktion som jag skapade som liknar "att ta bort icke-alfabetiska tecken". Hur tar man bort alla icke-alfabetiska tecken från strängen i SQL Server?

Den här använder en skiftlägeskänslig sortering som aktivt söker efter en kombination av icke-mellanslag/versaler och sedan använder STUFF-funktionen för att infoga mellanslag. Det här ÄR en skalär UDF, så vissa människor kommer omedelbart att säga att det kommer att vara långsammare än andra lösningar. Till den föreställningen säger jag, snälla testa den. Den här funktionen använder ingen tabelldata och går bara i slingor så många gånger som behövs, så den kommer sannolikt att ge dig mycket bra prestanda.

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

Kalla det så här:

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. Hur fungerar MySQL CASE?

  2. Använda guiden Offline Reorg

  3. Slå samman tabeller med SUM-problem i MYSQL

  4. Hur man tar bort inläggsrevisioner med WP-CLI