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

Group_Concat()がSQLiteでどのように機能するか

    SQLiteにはgroup_concat()があります 1つの列に対して返された複数の結果を1つに連結できるようにする関数。

    これは「文字列集約」と呼ばれることもあります。

    たとえば、データベースにクエリを実行する場合、各列の値を新しい行に出力する代わりに、group_concat()を使用できます。 それらをコンマ区切りのリストとして出力するようにします。

    構文

    この関数は、次のいずれかの方法で使用できます。

    group_concat(X)
    group_concat(X,Y)

    つまり、group_concat() 関数は、1つまたは2つの引数で使用できます。

    2番目の引数は、区切り文字として使用する文字を指定します。これを指定しない場合は、コンマ(, )はセパレータとして使用されます。

    引数が1つの例

    group_concat()を呼び出す例を次に示します。 引数が1つあります。

    SELECT group_concat(FirstName)
    FROM Employee;

    結果:

    Andrew,Nancy,Jane,Margaret,Steve,Michael,Robert,Laura

    group_concat()を使用しなかった場合 この列を連結すると、結果は次のようになります。

    SELECT FirstName
    FROM Employee;

    結果:

    Andrew    
    Nancy     
    Jane      
    Margaret  
    Steve     
    Michael   
    Robert    
    Laura    

    カスタムセパレータを使用する

    前述のように、区切り文字として使用する文字を指定するオプションがあります。

    パイプシンボル(|)を指定する例を次に示します。 )セパレータとして。

    SELECT group_concat(FirstName, '|')
    FROM Employee;

    結果:

    Andrew|Nancy|Jane|Margaret|Steve|Michael|Robert|Laura

    これは、カンマを使用しているが、カンマの右側にスペースを追加している別の例です。

    SELECT group_concat(FirstName, ', ')
    FROM Employee;

    結果:

    Andrew,Nancy,Jane,Margaret,Steve,Michael,Robert,Laura

    結果をグループ化する

    複数の列を返し、GROUP BYを使用できます それらを適切にグループ化するための条項。

    これが例です。

    SELECT ArtistId, group_concat(AlbumName) 
    FROM Albums 
    GROUP BY ArtistId LIMIT 10;

    結果:

    ArtistId  group_concat(AlbumName)                                                   
    --------  --------------------------------------------------------------------------
    1         Powerslave,Somewhere in Time,Piece of Mind,Killers,No Prayer for the Dying
    2         Powerage                                                                  
    3         All Night Wrong,The Sixteen Men of Tain                                   
    4         Big Swing Face                                                            
    5         Ziltoid the Omniscient,Casualties of Cool,Epicloud                        
    6         Singing Down the Lane                                                     
    7         Long Lost Suitcase,Praise and Blame,Along Came Jones                      
    9         No Sound Without Silence                                                  
    12        Blue Night,Eternity,Scandinavia                                           

    1. SQLiteでデータベースを作成する

    2. mysql_fetch_array()/ mysql_fetch_assoc()/ mysql_fetch_row()/mysql_num_rowsなど...パラメーター1がリソースであることが必要です

    3. OracleデータベースでPL/SQLSYS_REFCURSORを作成する方法

    4. OracleでSQLServerのIsNull()関数に相当するものは何ですか?