Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Кой е най-добрият начин да се изпише с главни букви първата буква на всяка дума в низ в SQL Server

От http://www.sql-server-helper.com/functions/initcap.aspx

CREATE FUNCTION [dbo].[InitCap] ( @InputString varchar(4000) ) 
RETURNS VARCHAR(4000)
AS
BEGIN

DECLARE @Index          INT
DECLARE @Char           CHAR(1)
DECLARE @PrevChar       CHAR(1)
DECLARE @OutputString   VARCHAR(255)

SET @OutputString = LOWER(@InputString)
SET @Index = 1

WHILE @Index <= LEN(@InputString)
BEGIN
    SET @Char     = SUBSTRING(@InputString, @Index, 1)
    SET @PrevChar = CASE WHEN @Index = 1 THEN ' '
                         ELSE SUBSTRING(@InputString, @Index - 1, 1)
                    END

    IF @PrevChar IN (' ', ';', ':', '!', '?', ',', '.', '_', '-', '/', '&', '''', '(')
    BEGIN
        IF @PrevChar != '''' OR UPPER(@Char) != 'S'
            SET @OutputString = STUFF(@OutputString, @Index, 1, UPPER(@Char))
    END

    SET @Index = @Index + 1
END

RETURN @OutputString

END
GO

Тук има по-прост/по-малък (но не работи, ако в някой ред няма интервали, „Невалиден параметър за дължина, прехвърлен на функцията RIGHT.“):

http://www.devx.com/tips/Tip/17608



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Виртуални машини Azure за използване на SQL сървър

  2. Задайте публичен профил по подразбиране за поща от база данни (SSMS)

  3. Свързване на SQL Server към PostgreSQL

  4. Трябва ли MAMP да върне ::1 като IP на localhost?

  5. Преобразувайте „datetimeoffset“ в „time“ в SQL Server (T-SQL примери)