sql >> Database teknologi >  >> RDS >> Sqlserver

Opdel ord med stort bogstav i sql

Her er en funktion, jeg har oprettet, der ligner "fjernelse af ikke-alfabetiske tegn". Hvordan fjerner man alle ikke-alfabetiske tegn fra streng i SQL Server?

Denne bruger en versalfølsom sortering, som aktivt opsøger en kombination af ikke-mellemrum/store bogstaver og derefter bruger STUFF-funktionen til at indsætte mellemrummet. Dette ER en skalær UDF, så nogle folk vil straks sige, at det vil være langsommere end andre løsninger. Til den forestilling, siger jeg, prøv den venligst. Denne funktion bruger ingen tabeldata og går kun så mange gange som nødvendigt, så den vil sandsynligvis give dig en meget god ydeevne.

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

Kald det sådan her:

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. Sådan indsætter du data i tabellen ved hjælp af lagrede procedurer i postgresql

  2. LEFT() vs SUBSTRING() i SQL Server:Hvad er forskellen?

  3. SQL Server på Linux

  4. Indre sammenføjning &ydre sammenføjning; er rækkefølgen af ​​borde i fra vigtig?