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

SQL:pisz tylko na pierwszą literę

Czy prosisz o zmianę nazwy samej kolumny, czy zapisanie danych wewnątrz kolumny wielkimi literami? Jeśli chcesz zmienić jego dane, użyj tego:

UPDATE [yourtable]
SET word=UPPER(LEFT(word,1))+LOWER(SUBSTRING(word,2,LEN(word)))

Jeśli chcesz to zmienić tylko do wyświetlania i nie potrzebujesz zmieniać rzeczywistych danych w tabeli:

SELECT UPPER(LEFT(word,1))+LOWER(SUBSTRING(word,2,LEN(word))) FROM [yourtable]

Mam nadzieję, że to pomoże.

EDYCJA:Zdałem sobie sprawę z „-”, więc oto moja próba rozwiązania tego problemu w funkcji.

CREATE FUNCTION [dbo].[CapitalizeFirstLetter]
(
--string need to format
@string VARCHAR(200)--increase the variable size depending on your needs.
)
RETURNS VARCHAR(200)
AS

BEGIN
--Declare Variables
DECLARE @Index INT,
@ResultString VARCHAR(200)--result string size should equal to the @string variable size
--Initialize the variables
SET @Index = 1
SET @ResultString = ''
--Run the Loop until END of the string

WHILE (@Index <LEN(@string)+1)
BEGIN
IF (@Index = 1)--first letter of the string
BEGIN
--make the first letter capital
SET @ResultString =
@ResultString + UPPER(SUBSTRING(@string, @Index, 1))
SET @Index = @Index+ 1--increase the index
END

-- IF the previous character is space or '-' or next character is '-'

ELSE IF ((SUBSTRING(@string, @Index-1, 1) =' 'or SUBSTRING(@string, @Index-1, 1) ='-' or SUBSTRING(@string, @Index+1, 1) ='-') and @Index+1 <> LEN(@string))
BEGIN
--make the letter capital
SET
@ResultString = @ResultString + UPPER(SUBSTRING(@string,@Index, 1))
SET
@Index = @Index +1--increase the index
END
ELSE-- all others
BEGIN
-- make the letter simple
SET
@ResultString = @ResultString + LOWER(SUBSTRING(@string,@Index, 1))
SET
@Index = @Index +1--incerase the index
END
END--END of the loop

IF (@@ERROR
<> 0)-- any error occur return the sEND string
BEGIN
SET
@ResultString = @string
END
-- IF no error found return the new string
RETURN @ResultString
END

Zatem kod będzie wyglądał następująco:

UPDATE [yourtable]
SET word=dbo.CapitalizeFirstLetter([STRING TO GO HERE])


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak możesz nazwać tabele zestawu danych, które zwracasz w przechowywanej procedurze?

  2. Raportowanie danych wydajności SQLDIAG za pomocą narzędzia RML Utilities | Rozwiązywanie problemów z wydajnością serwera SQL -7

  3. Połącz wiele wierszy w jeden ciąg tekstowy za pomocą grupowania

  4. Połącz się z bazą danych MSSQL za pomocą Flask-SQLAlchemy

  5. Jak generować dane testowe w SQL Server