Funkcja MySQL CONCAT()
Ostatnia aktualizacja 26 lutego 2020 08:08:24 (UTC/GMT +8 godzin)
Funkcja MySQL CONCAT()
Funkcja MySQL CONCAT() służy do dodawania dwóch lub więcej ciągów znaków.
- Może występować jeden lub więcej argumentów.
- Zwraca łańcuch będący wynikiem konkatenacji argumentów.
- Zwraca łańcuch binarny, jeśli wszystkie argumenty są łańcuchami binarnymi.
- Zwraca łańcuch binarny, jeśli argumenty zawierają łańcuchy binarne.
- Jeśli argument jest numeryczny, jest konwertowany na jego odpowiednik w postaci łańcucha binarnego.
- Zwraca NULL, jeśli którykolwiek z argumentów jest NULL.
Syntaktyka:
CONCAT (string1, string2,…)
Argumenty
Nazwa | Opis |
---|---|
string1 | Pierwszy ciąg do złączenia. |
string2 | Drugi ciąg do połączenia. W ten sposób można określić do N liczby ciągów. |
Syntaktyczny schemat:
MySQL wersja: 5.6
Obrazowe przedstawienie funkcji MySQL CONCAT()
Prezentacja wideo
Twoja przeglądarka nie obsługuje wideo HTML5.
Przykład funkcji MySQL Concat z wykorzystaniem argumentów
Jeden argument:
mysql> SELECT CONCAT('w3resource');+----------------------+| CONCAT('w3resource') |+----------------------+| w3resource |+----------------------+1 row in set (0.00 sec)
Dwa lub więcej argumentów:
mysql> SELECT CONCAT('w3resource','.','com');+--------------------------------+| CONCAT('w3resource','.','com') |+--------------------------------+| w3resource.com |+--------------------------------+1 row in set (0.00 sec)
Jeden z argumentów jest NULL :
mysql> SELECT CONCAT('w3resource','.','com',NULL);+-------------------------------------+| CONCAT('w3resource','.','com',NULL) |+-------------------------------------+| NULL |+-------------------------------------+1 row in set (0.02 sec)
Argument numeryczny:
mysql> SELECT CONCAT(102.33);+----------------+| CONCAT(102.33) |+----------------+| 102.33 |+----------------+1 row in set (0.00 sec)
W przypadku cytowanych ciągów znaków konkatenacja może być wykonana poprzez umieszczenie ciągów obok siebie :
mysql> SELECT 'w3resource' '.' 'com';+----------------+| w3resource |+----------------+| w3resource.com | +----------------+1 row in set (0.00 sec)
Przykład zastosowania funkcji MySQL CONCAT() na kolumnach
Następująca instrukcja MySQL doda wartości kolumny pub_city z wartościami kolumny country tabeli publisher umieszczając między nimi znak '–>'.
Kod:
SELECT CONCAT(pub_city,'--> ',country)FROM publisher;
Przykładowa tabela: publisher
Przykładowe dane wyjściowe:
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
Następujące polecenie MySQL doda kolumnę pub_city i country przez '–>' dla tych wydawców, których konkatenowana nazwa i kraj siedziby to 'Ultra Press Inc. London'
Kod:
SELECT CONCAT(pub_city,'--> ',country)FROM publisherWHERE CONCAT(pub_name,' ',country_office)="Ultra Press Inc. London";
Przykładowa tabela: publisher
Przykładowe dane wyjściowe:
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 zwraca NULL, jeśli jakiekolwiek pole zawiera NULL
Następujące polecenie MySQL doda kolumnę book name i pub_lang przez '–>' dla wszystkich książek.
Kod:
SELECT CONCAT(book_name,'--> ',pub_lang)FROM book_mast;
Przykładowa tabela: book_mast
Przykładowe dane wyjściowe:
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)
Powyższe wyjście pokazuje, że gdy wartość którejkolwiek z dwóch wymienionych kolumn jest NULL, wyjście zwraca NULL, zaznaczone czerwonym kolorem.
MySQL CONCAT przy użyciu JOINS oraz znaku wieloznacznego
Następujące wyrażenie MySQL wyświetli kombinację imienia, nazwiska oraz nazwy stanowiska dla tych pracowników, którzy zawierają słowo Smith w swojej kombinacji imienia i nazwiska.
Kod:
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%';
Przykładowa tabela: pracownicy
Przykładowa tabela: stanowiska
Przykładowe dane wyjściowe:
mysql> SELECT CONCAT( first_name, ' ', last_name ) AS "name", job_title -> FROM employees e, jobs j -> WHERE e.job_id = j.job_id -> AND CONCAT( first_name, ' ', last_name ) LIKE '%Smith%';+---------------+----------------------+| name | job_title |+---------------+----------------------+| Lindsey Smith | Sales Representative || William Smith | Sales Representative |+---------------+----------------------+2 rows in set (0.00 sec)
Przykładowy skrypt
<!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>
Przykładowy skrypt
<%@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>
Spróbuj następujących zapytań following Queries
Napisz instrukcję SQL, aby wyświetlić miasto i nazwę wydawcy według grupy na mieście wydawcy.
Napisz zapytanie SQL, aby wyświetlić miasto i nazwę wydawcy oraz siedzibę krajową z odpowiednim tytułem dla tych wydawców, których siedziba krajowa i miasto wydawnicze znajdują się w tym samym miejscu.
Napisz zapytanie SQL, aby wyświetlić nazwę wydawcy, siedzibę krajową i maksymalną liczbę oddziałów z odpowiednim tytułem dla tych wydawców, którzy posiadają ponad 15 oddziałów na całym świecie.
Przykładowa tabela : publisher
MySQL Online Editor
Wyświetl odpowiedź
SELECT CONCAT(’Miasto:- ',pub_city,' Publisher Name :- ',pub_name,' Country Office :- ',country_office)
FROM publisher
WHERE pub_city=country_office
GROUP BY pub_city;
SELECT CONCAT(’Nazwa wydawcy :- ',pub_name,
’Country Office:- ',country_office,
’Największe oddziały:- ',Max(no_of_branch))
FROM publisher
GROUP BY pub_name
HAVING Max(no_of_branch)>=15;