MySQL CONCAT_WS () функция
Функция CONCAT_WS ()
Функция MySQL CONCAT_WS () используется для объединения двух или более строк с разделителем. Разделитель, указанный в первом аргументе, добавляется между двумя строками. Сам разделитель может быть строкой. Если разделитель равен NULL, результат равен NULL.
Синтаксис:
CONCAT_WS (разделитель, строка1, строка2,…)
аргументы
название | Описание |
---|---|
разделитель | Определяет разделитель, добавленный между строками при соединении. |
string1 | Первая строка для соединения. |
строка2 | Вторая строка для соединения. Таким способом можно указать до N строк. |
Синтаксическая диаграмма:
Версия MySQL: 5.6
Видео презентация
Иллюстрированная презентация
Пример функции MySQL CONCAT_WS ()
Следующая инструкция MySQL добавляет первый аргумент и второй аргумент с разделителем ",".
Код:
SELECT CONCAT_WS(',','1st string','2nd string');
Пример вывода:
mysql> SELECT CONCAT_WS (',', '1st string', '2nd string'); + ------------------------------------------ + | CONCAT_WS (',', '1st string', '2nd string') | + ------------------------------------------ + | 1-я строка, 2-я строка | + ------------------------------------------ + 1 ряд в наборе (0,00 сек)
Пример функции MySQL CONCAT-WS () с предложением where
Следующая инструкция MySQL добавляет аргументы (т.е. aut_id, aut_name, country и home_city) с разделителем «,», если страной автора не является США.
Код:
SELECT CONCAT_WS(',',aut_id,aut_name,country,home_city)
FROM author
WHERE country<>'USA';
Пример таблицы: автор
Пример вывода:
mysql> SELECT CONCAT_WS (',', aut_id, aut_name, страна, home_city) -> ОТ автора -> ГДЕ страна <> 'США'; + ------------------------------------------------- - + | CONCAT_WS (',', aut_id, aut_name, страна, home_city) | + ------------------------------------------------- - + | AUT001, Уильям Нортон, Великобритания, Кембридж | | AUT002, Уильям Моэм, Канада, Торонто | | AUT003, Уильям Энтони, Великобритания, Лидс | | AUT004, SBSwaminathan, Индия, Бангалор | | AUT005, Томас Морган, Германия, Арнсберг | | AUT007, Пирс Гибсон, Великобритания, Лондон | | AUT009, маркиз де Эллис, Бразилия, Рио-де-Жанейро | | AUT011, John Betjeman Hunter, Австралия, Сидней | | AUT012, Эван Хайек, Канада, Ванкувер | | AUT013, E. Ховард, Австралия, Аделаида | | AUT014, CJ Wilde, Великобритания, Лондон | + ------------------------------------------------- - + 11 рядов в наборе (0,00 сек)
PHP скрипт
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>example-concat_ws-function - php mysql examples | w3resource</title>
<meta name="description" content="example-concat_ws-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 authors id, name, country, home city:</h2>
<table class='table table-bordered'>
<tr>
<th>Author's id, name, country, home 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_WS(",",aut_id,aut_name,country,home_city) as output
FROM author
WHERE country<>"USA"') as $row) {
echo "<tr>";
echo "<td>" . $row['output'] . "</td>";
echo "</tr>";
}
?>
</tbody></table>
</div>
</div>
</div>
</body>
</html>
JSP скрипт
<%@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_ws-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_WS(',',aut_id,aut_name,country,home_city) as output FROM author WHERE country<>'USA'";
rs = statement.executeQuery(Data);
%>
<TABLE border="1">
<tr width="10" bgcolor="#9979">
<td>Author's id, name, country, home city</td>
</tr>
<%
while (rs.next()) {
%>
<TR>
<TD><%=rs.getString("output")%></TD>
</TR>
<% } %>
</table>
<%
rs.close();
statement.close();
connection.close();
} catch (Exception ex) {
out.println("Cant connect to database.");
}
%>
</body>
</html>
Разница между MySQL GROUP_CONCAT () и CONCAT_WS ()
Функция GROUP_CONCAT () возвращает строку с объединенным ненулевым значением из группы.
Функция CONCAT_WS () используется для добавления двух или более строк с разделителем
Смотрите следующий пример:
mysql> SELECT ИД пользователя, fname, lname FROM user_details; + ---------- + -------- + --------- + | идентификатор пользователя | имя имя | + ---------- + -------- + --------- + | scott123 | Скотт | Rayy | | ferp6734 | Палаш | Гоша | | diana094 | Диана | Лоренц | | abcd123 | Джон | луч | + ---------- + -------- + --------- + 4 ряда в наборе (0,00 сек) mysql> SELECT GROUP_CONCAT (CONCAT_WS ('', fname, lname)) FROM user_details ORDER BY ID пользователя ASC; + ------------------------------------------------ + | GROUP_CONCAT (CONCAT_WS ('', fname, lname)) | + ------------------------------------------------ + | Скотт Рэй, Палаш Гош, Диана Лоренц, Джон Рэй | + ------------------------------------------------ + 1 ряд в наборе (0,03 сек)
Здесь CONCAT_WS () вставляет пробел в качестве разделителя между fname и lname, а GROUP_CONCAT () возвращает результат в одной строке.
Все строковые функции
Предыдущая: CHARACTER_LENGTH
Далее: КОНКАТ
Новый контент: Composer: менеджер зависимостей для PHP , R программирования