sql >> Database >  >> RDS >> Sqlserver

SQL Server:maak alle HOOFDLETTERS tot juiste hoofdletters/titels

Deze functie:

  • "Juiste hoofdletters" alle "HOOFDLETTERS"-woorden die worden gescheiden door witruimte
  • laat "kleine letters" alleen
  • werkt goed, zelfs voor niet-Engelse alfabetten
  • is draagbaar in die zin dat het geen fancy features van recente SQL-serverversies gebruikt
  • kan eenvoudig worden gewijzigd om NCHAR en NVARCHAR te gebruiken voor unicode-ondersteuning, evenals elke gewenste parameterlengte
  • definitie van witruimte kan worden geconfigureerd
CREATE FUNCTION ToProperCase(@string VARCHAR(255)) RETURNS VARCHAR(255)
AS
BEGIN
  DECLARE @i INT           -- index
  DECLARE @l INT           -- input length
  DECLARE @c NCHAR(1)      -- current char
  DECLARE @f INT           -- first letter flag (1/0)
  DECLARE @o VARCHAR(255)  -- output string
  DECLARE @w VARCHAR(10)   -- characters considered as white space

  SET @w = '[' + CHAR(13) + CHAR(10) + CHAR(9) + CHAR(160) + ' ' + ']'
  SET @i = 1
  SET @l = LEN(@string)
  SET @f = 1
  SET @o = ''

  WHILE @i <= @l
  BEGIN
    SET @c = SUBSTRING(@string, @i, 1)
    IF @f = 1 
    BEGIN
     SET @o = @o + @c
     SET @f = 0
    END
    ELSE
    BEGIN
     SET @o = @o + LOWER(@c)
    END

    IF @c LIKE @w SET @f = 1

    SET @i = @i + 1
  END

  RETURN @o
END

Resultaat:

dbo.ToProperCase('ALL UPPER CASE and    SOME lower ÄÄ ÖÖ ÜÜ ÉÉ ØØ ĈĈ ÆÆ')
-----------------------------------------------------------------
All Upper Case and      Some lower Ää Öö Üü Éé Øø Cc Ææ


  1. SQL Server 2016:een databasegebruiker maken

  2. Functies met variabel aantal invoerparameters

  3. Verbind PHP met MSSQL via PDO ODBC

  4. Het datumformaat vinden dat wordt gebruikt in de huidige sessie in SQL Server (T-SQL)