Split words with a capital letter in sql

前端 未结 6 1092
清酒与你
清酒与你 2020-11-29 08:59

Does anyone know how to split words starting with capital letters from a string?

Example:

    DECLARE @var1 varchar(100) = \'OneTwoThreeFour\'
    DE         


        
6条回答
  •  南笙
    南笙 (楼主)
    2020-11-29 09:22

    Here is a function I have just created.

    FUNCTION

    CREATE FUNCTION dbo.Split_On_Upper_Case
     (
         @String VARCHAR(4000)
     )
    RETURNS VARCHAR(4000)
    AS
    BEGIN
    
    DECLARE @Char CHAR(1);
    DECLARE @i    INT = 0;
    DECLARE @OutString VARCHAR(4000) = '';
    
    
    WHILE (@i <= LEN(@String))
    BEGIN
        SELECT @Char = SUBSTRING(@String, @i,1)
    
        IF (@Char = UPPER(@Char) Collate Latin1_General_CS_AI) 
           SET @OutString = @OutString + ' ' + @Char;
        ELSE 
           SET @OutString = @OutString +  @Char;
    
         SET @i += 1;
    END
    
     SET @OutString =  LTRIM(@OutString);
    
     RETURN @OutString;
    
    END 
    

    Test Data

    DECLARE @TABLE TABLE (Strings VARCHAR(1000))
    INSERT INTO @TABLE 
    VALUES ('OneTwoThree')   ,
           ('FourFiveSix')   ,
           ('SevenEightNine')
    

    Query

    SELECT dbo.Split_On_Upper_Case(Strings) AS Vals
    FROM @TABLE
    

    Result Set

    ╔══════════════════╗
    ║       Vals       ║
    ╠══════════════════╣
    ║ One Two Three    ║
    ║ Four Five Six    ║
    ║ Seven Eight Nine ║
    ╚══════════════════╝
    

提交回复
热议问题