Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server:Zmień wszystkie wielkie litery na prawidłowe litery/tytuły

Ta funkcja:

  • „Właściwe litery” wszystkie słowa „WIELKIE LITERY” oddzielone spacją
  • pozostawia „słowa małymi literami” w spokoju
  • działa poprawnie nawet w przypadku alfabetów innych niż angielski
  • jest przenośny, ponieważ nie wykorzystuje wymyślnych funkcji najnowszych wersji serwera SQL
  • można łatwo zmienić, aby używać NCHAR i NVARCHAR do obsługi Unicode, a także dowolnej długości parametru, którą uznasz za odpowiednią
  • definicję odstępu można skonfigurować
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

Wynik:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wielka sprawa:dodatek Service Pack 1 dla programu SQL Server 2016

  2. 2 sposoby tworzenia tabeli na serwerze połączonym za pomocą T-SQL

  3. DATEDIFF() vs DATEDIFF_BIG() w SQL Server:jaka jest różnica?

  4. Jak włączyć kompresję w istniejącej tabeli w SQL Server (T-SQL)

  5. Jak wydrukować VARCHAR(MAX) za pomocą instrukcji Print?