sql >> Databáze >  >> RDS >> Sqlserver

Rozdělte slova velkým písmenem v sql

Zde je funkce, kterou jsem vytvořil a která je podobná "odstranění neabecedních znaků". Jak odstranit všechny neabecední znaky z řetězce na serveru SQL?

Tento používá třídění rozlišující malá a velká písmena, které aktivně vyhledává kombinaci bez mezery/velká písmena a poté používá funkci STUFF k vložení mezery. Toto JE skalární UDF, takže někteří lidé okamžitě řeknou, že to bude pomalejší než jiná řešení. K této představě říkám, prosím otestujte to. Tato funkce nepoužívá žádná tabulková data a zacyklí pouze tolikrát, kolikrát je potřeba, takže vám pravděpodobně poskytne velmi dobrý výkon.

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
 

Nazvěte to takto:

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. Jak migrovat z Oracle na MySQL / Percona Server

  2. Jak zřetězit řetězce v PostgreSQL

  3. Vyberte hodnoty z pole XML v SQL Server 2008

  4. Existuje způsob, jak získat seznam všech aktuálních dočasných tabulek na serveru SQL?