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

人名の文字列を分解してイニシャルを出力する sql

    これは、「Firstname Lastname」と「Firstname Middlename Lastname」の両方の組み合わせで機能するはずです。

    DECLARE @name AS NVARCHAR(50) 
    SET @name = 'Firstname Middle Lastname' 
    
    
    SELECT SUBSTRING(@name, 1, 1) +     --First initial
        SUBSTRING(@name, CHARINDEX(' ', @name) + 1, 1) +    --Middle/Last initial
        CASE WHEN 0 <>  CHARINDEX(' ', @name, CHARINDEX(' ', @name) + 1) -- More than two words 
            THEN SUBSTRING(@name, CHARINDEX(' ', @name, CHARINDEX(' ', @name) + 1) + 1, 1)  --Last initial
        ELSE '' --Have to add empty string to avoid NULLing entire result
        END
    

    もちろん、 にスペースがある場合は なんらかの理由で、これを解析する際に問題が発生する可能性がありますが、名前を別のフィールドに保存しない場合は、とにかくそうなると思います.



    1. MySQL Mixing Damerau–Levenshtein Fuzzy with Like Wildcard

    2. MySQL-日時フィールドのデフォルト値を削除

    3. Oracleでパッケージを使用することの長所と短所

    4. Laravel5.5本番データベースを使用して移行を統合