MySQL クエリのスプライシング
MySQL を使用してクエリを実行する場合、複数のフィールドや複数のテーブルのフィールドをスプライスする必要がある場合がありますが、この場合、MySQL が提供する文字列スプライシング機能を使用して操作できます。一般的に使用される文字列連結関数には、CONCAT、CONCAT_WS、GROUP_CONCAT などがあります。
CONCAT 関数は、2 つ以上の文字列またはフィールドを接続するために使用されます。構文は次のとおりです:
CONCAT(string1, string2, ...)
このうち、string1、string2 ... は接続する文字列またはフィールドを表し、定数、列名、式、関数などを指定できます。たとえば、従業員の名前と役職を検索するには、次のステートメントを使用できます。
SELECT CONCAT(last_name, ' ', first_name) AS name, job_title FROM employees
ここでの CONCAT 関数は、last_name と first_name を連結し、クエリ結果のフィールド名としてスペースで区切ります。実行結果は次のとおりです:
name | job_title |
---|---|
Geoni Bakewell | 生産マネージャー |
Lemuel Marmie | 出荷マネージャー |
Lino Uselman | エンジニア |
ハニー・タニー | セールスマネージャー |
... | ... |
CONCAT_WS 関数は文字列の連結にも使用されますが、CONCAT 関数とは異なり、区切り文字を指定できます。
CONCAT_WS(separator, string1, string2, ...)
このうち、separator は区切り文字を表し、任意の文字列を使用できます。string1、string2... は接続する文字列またはフィールドを表し、複数の文字列はカンマで区切られます。たとえば、従業員のフルネームと電子メール アドレスを検索するには、次のステートメントを使用できます。
SELECT CONCAT_WS(' ', first_name, last_name) AS full_name, email FROM employees
ここでの CONCAT_WS 関数は、区切り文字としてスペースを使用し、first_name と last_name をクエリ結果のフィールド full_name として連結します。 。実行結果は次のとおりです:
full_name | |
---|---|
Geoni Bakewell | gbakewell@classicmodelcars.com |
レミュエル・マーミー | lmarmie@classicmodelcars.com |
luselman@classicmodelcars.com | |
htunney@classicmodelcars.com | |
.... |
GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val])ここで、expr は連結される列または式を表し、ORDER BY と SEPARATOR はそれぞれ並べ替えと区切り文字を表します (オプション)。デフォルトでは、GROUP_CONCAT 関数によって返される文字列には長さ制限があり、パラメータ group_concat_max_len を設定することで変更できることに注意してください。 たとえば、各部門のすべての従業員の名前をクエリし、それらをカンマで区切られた文字列に連結するには、次のステートメントを使用できます:
SELECT department, GROUP_CONCAT(last_name ORDER BY employee_number ASC SEPARATOR ', ') AS employee_names FROM employees GROUP BY departmentここでの GROUP_CONCAT 関数は、それに応じて last_name になります。 toemployee_number は順番に並べ替えられ、クエリ結果のフィールドemployee_namesとしてカンマとスペースで区切られます。実行結果は次のとおりです:
employee_names | |
---|---|
#顧客サービス | ##ツェン、ヴァナウフ、フォン ^^^^^^ |
ボウ、フィレッリ、パターソン、ツェン | |
... | |
概要 | MySQL クエリ プロセス中に、複数のフィールドまたは複数のテーブル内のフィールドを結合する必要があることがよくあります。この関数を実装する際、MySQL は 3 つの文字列結合関数 (CONCAT、CONCAT_WS、GROUP_CONCAT) を提供しており、これらは 2 つ以上の文字列を接続する、任意の複数の文字列を接続して指定された区切り文字で区切る、および複数のフィールドを結合して 1 つの文字列に結合するために使用されます。これらの関数を使用すると、データ処理が大幅に容易になり、クエリの効率が向上します。 |
以上がmysqlクエリのスプライシングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。