Articles

MySQL CONCAT()関数

最終更新日: 2020年2月26日 08:08:24 (UTC/GMT +8時間)

CONCAT()関数

MySQL CONCAT()関数は、2つ以上の文字列を追加するために使用されます。

  • 1つ以上の引数があるかもしれません。
  • 引数を連結した結果の文字列を返します。
  • すべての引数が非二項文字列の場合、非二項文字列を返します。
  • 引数に二項文字列が含まれる場合、二項文字列を返します。
  • 引数が数値の場合、同等の非二項文字列に変換されます。
  • いずれかの引数がNULLの場合、NULLを返します。

構文です。

CONCAT (string1, string2,…)

引数

名前 説明
string1 最初に結合される文字列。
string2 2番目の文字列を結合します。 このように最大でN個の文字列を指定することができます。

構文図:

MySQL CONCAT()関数 - 構文図

MySQL Version: 5.6

MySQL: CONCAT()関数 - w3resource

MySQL CONCAT()関数の図解

MySQL CONCAT関数の図解

ビデオプレゼンテーション

Your browser does not support HTML5 video.

Example of MySQL Concat Function using agruments

1つの引数です。

mysql> SELECT CONCAT('w3resource');+----------------------+| CONCAT('w3resource') |+----------------------+| w3resource |+----------------------+1 row in set (0.00 sec)

引数が2つ以上の場合。

mysql> SELECT CONCAT('w3resource','.','com');+--------------------------------+| CONCAT('w3resource','.','com') |+--------------------------------+| w3resource.com |+--------------------------------+1 row in set (0.00 sec)

引数の1つがNULL :

mysql> SELECT CONCAT('w3resource','.','com',NULL);+-------------------------------------+| CONCAT('w3resource','.','com',NULL) |+-------------------------------------+| NULL |+-------------------------------------+1 row in set (0.02 sec)

数値の引数。

mysql> SELECT CONCAT(102.33);+----------------+| CONCAT(102.33) |+----------------+| 102.33 |+----------------+1 row in set (0.00 sec)

引用符で囲まれた文字列の場合、文字列を隣り合わせにすることで連結することができます。

mysql> SELECT 'w3resource' '.' 'com';+----------------+| w3resource |+----------------+| w3resource.com | +----------------+1 row in set (0.00 sec)

MySQLのCONCAT()関数をカラムに適用した例

以下のMySQL文はpub_cityカラムの値とpublisherテーブルのcountryカラムの値を「–>」を挟んで加算します。

コード:

SELECT CONCAT(pub_city,'--> ',country)FROM publisher; 

サンプルテーブル:publisher

サンプル出力です。

mysql> SELECT CONCAT(pub_city,'--> ',country) -> FROM publisher;+---------------------------------+| CONCAT(pub_city,'--> ',country) |+---------------------------------+| New York--> USA | | Mumbai--> India | | Adelaide--> Australia | | London--> UK | | Houstan--> USA | | New York--> USA | | Cambridge--> UK | | New Delhi--> India | +---------------------------------+8 rows in set (0.00 sec)

MySQL CONCAT using WHERE clause

以下のMySQLのステートメントは、名前と国のオフィスが「Ultra Press Inc.」である出版社に対して、pub_cityとcountryのカラムを「–>」で追加します。 London’

Code:

SELECT CONCAT(pub_city,'--> ',country)FROM publisherWHERE CONCAT(pub_name,' ',country_office)="Ultra Press Inc. London"; 

Sample table: publisher

Sample Output:

mysql> SELECT CONCAT(pub_city,'--> ',country) -> FROM publisher -> WHERE CONCAT(pub_name,' ',country_office)="Ultra Press Inc. London";+---------------------------------+| CONCAT(pub_city,'--> ',country) |+---------------------------------+| London--> UK |+---------------------------------+1 row in set (0.02 sec)

MySQL CONCAT returns NULL if any field contain NULL

以下のMySQL文では、すべてのブックに対してブックネームとpub_langカラムを「–>」で追加します。

Code:

SELECT CONCAT(book_name,'--> ',pub_lang)FROM book_mast;

Sample table: book_mast

Sample Output:

mysql> SELECT CONCAT(book_name,'--> ',pub_lang) -> FROM book_mast;+------------------------------------------------+| CONCAT(book_name,'--> ',pub_lang) |+------------------------------------------------+| Introduction to Electrodynamics--> English || Understanding of Steel Construction--> English || Guide to Networking--> Hindi || Transfer of Heat and Mass--> English || NULL || Fundamentals of Heat--> German || Advanced 3d Graphics--> Hindi || Human Anatomy--> German || Mental Health Nursing--> English || Fundamentals of Thermodynamics--> English || The Experimental Analysis of Cat--> French || The Nature of World--> English || Environment a Sustainable Future--> German || NULL || Anatomy & Physiology--> Hindi || Networks and Telecommunications--> French |+------------------------------------------------+16 rows in set (0.01 sec)

上記の出力では、前述の2つのカラムのいずれかの値がNULLの場合、赤色で示されたNULLが返されています。

MySQL CONCAT using JOINS and wildcard character

次のMySQLステートメントは、姓と名の組み合わせにSmithという単語を含む従業員の姓と名と職種の組み合わせを表示します。

コード:

SELECT CONCAT( first_name, ' ', last_name ) AS "name", job_titleFROM employees e, jobs jWHERE e.job_id = j.job_idAND CONCAT( first_name, ' ', last_name ) LIKE '%Smith%';

サンプルテーブル:従業員

サンプルテーブル:ジョブ

サンプル出力。

PHPScript

<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>example-concat-function - php mysql examples | w3resource</title><meta name="description" content="example-concat-function - php mysql examples | w3resource"><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"></head><body><div class="container"><div class="row"><div class="col-md-12"><h2>list of publisher's city and country with 'publisher's city--->country' format:</h2><table class='table table-bordered'><tr><th>Publisher's City</th></tr><?php$hostname="your_hostname";$username="your_username";$password="your_password";$db = "your_dbname";$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);foreach($dbh->query('SELECT CONCAT(pub_city,"--> ",country)FROM publisher') as $row) {echo "<tr>";echo "<td>" . $row . "</td>";echo "</tr>";}?></tbody></table></div></div></div></body></html>

JSPScript

<%@page contentType="text/html" pageEncoding="UTF-8"%><%@ page import="java.sql.*" %><%@ page import="java.io.*" %><!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>example-concat-function</title></head><body><%try {Class.forName("com.mysql.jdbc.Driver").newInstance();String Host = "jdbc:mysql://localhost:3306/w3resour_bookinfo";Connection connection = null;Statement statement = null;ResultSet rs = null;connection = DriverManager.getConnection(Host, "root", "datasoft123");statement = connection.createStatement();String Data ="SELECT CONCAT(pub_city,'--> ',country) FROM publisher";rs = statement.executeQuery(Data);%><TABLE border="1"><tr width="10" bgcolor="#9979"><td>Publisher's City</td></tr><%while (rs.next()) {%><TR><TD><%=rs.getString("CONCAT(pub_city,'--> ',country)")%></TD></TR><% } %></table><%rs.close();statement.close();connection.close();} catch (Exception ex) {out.println("Cant connect to database.");}%></body></html>

Trythe 以下のクエリを試してみてください

publisher cityのグループに応じて、パブリッシャーの都市名と名前を表示するSQLステートメントを書いてください。

国のオフィスと出版都市が同じ場所にある出版社については、出版都市と名前、国のオフィスを適切なタイトルで表示するSQL文を作成してください。

世界中に15以上の支店を持つ出版社については、出版社の名前、国のオフィス、最大支店数を適切なタイトルで表示するSQL文を作成してください。

Sample table : publisher

MySQL Online Editor

Display answer

SELECT CONCAT(pub_city,’ — ‘,pub_name)
FROM publisher
GROUP BY pub_city;

SELECT CONCAT(‘City:- ‘,pub_city,’ 出版社名 :- ‘,pub_name,’ 国のオフィス :- ‘,country_office)
FROM publisher
WHERE pub_city=country_office
GROUP BY pub_city;

SELECT CONCAT(‘パブリッシャー名 :-‘,pub_name,
‘Country_office:- ‘,country_office,
‘Highest Branches:- ‘,Max(no_of_branch))
FROM publisher
GROUP BY pub_name
HAVING Max(no_of_branch)>=15;

GROUP BY pub_city
GROUP BY pub_city
HAVING Max(no_of_branch)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です