sql >> データベース >  >> RDS >> Sqlserver

SQL:最初の文字のみを大文字にする

    列自体の名前を変更するか、列内のデータを大文字にするかを尋ねていますか?データを変更する必要がある場合は、次を使用してください:

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

    表示のためだけに変更したいだけで、テーブル内の実際のデータを変更する必要がない場合:

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

    これがお役に立てば幸いです。

    編集:「-」について気付いたので、関数でこの問題を解決する試みを次に示します。

    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
    

    したがって、コードは次のようになります。

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


    1. SQLServerで一度に複数の列を変更する方法

    2. PostgreSQLで値に少なくとも1桁の数字が含まれているかどうかを検出する

    3. 関数とストアドプロシージャ

    4. T-SQLを使用してSQLServerデータベースの照合を変更する方法