Demon413 Ответов: 2

В чем разница между concat_ws, concat , group_concat ?


я много ищу в google об этих функциях , но ничего не могу понять:

1- что за разница между ними ??

2- когда я должен использовать эти функции ? есть ли Условия чтобы использовать любой из них
функции ?


3- объясните с помощью пример пожалуйста, если вы можете .

Что я уже пробовал:

ищу и не понимаю ..

2 Ответов

Рейтинг:
2

Maciej Los

Лучший способ узнать это-прочитать документацию:
CONCAT (Transact-SQL) | Microsoft Docs[^]- Возвращает строку, являющуюся результатом объединения двух или более строковых значений
CONCAT_WS (Transact-SQL) | Microsoft Docs[^]- Объединяет переменное число аргументов с разделителем, указанным в 1-м аргументе.
MySQL :: mysql 5.7 справочное руководство :: 13.19.1 описание функций Aggregate (GROUP BY) [^]- возвращает строковый результат с Объединенными ненулевыми значениями из группы. Он возвращает NULL, если нет ненулевых значений.

Заметить что GROUP_CONCAT специфична для MySQL, эквивалентной функцией для MS SQL Server является CONCAT_WS.


CHill60

Извините - я не видел, что вы уже опубликовали решение, когда я строил свой: facepalm:

Maciej Los

Не волнуйтесь!
Овации,
Мацей

Рейтинг:
12

CHill60

Есть несколько вполне ясных примеров!

Посмотрите на эту ссылку для GROUP_CONCAT : Функция MySQL GROUP_CONCAT () - w3resource[^Ключ к разгадке находится в названии, это позволит сгруппировать результаты.
Еще один очень простой пример - если у вас есть таблица

create table test
(
    stuName varchar(20),
    score int
);

insert into test(stuName, score) values ('John', 1);
insert into test(stuName, score) values ('Joan', 2);
insert into test(stuName, score) values ('Jeff', 3);
insert into test(stuName, score) values ('John', 4);
insert into test(stuName, score) values ('Joan', 5);
insert into test(stuName, score) values ('Jeff', 6);
Затем GROUP_CONCAT
SELECT stuName,
    GROUP_CONCAT(TO_CHAR(score))
    FROM test
    GROUP BY stuName;
даст результаты
John  1,4
Joan  2,5
Jeff  3,6


Эта ссылка предназначена для CONCAT_WS - Функция MySQL CONCAT_WS () - w3resource[^]. Еще один простой пример
SELECT stuName, CONCAT_WS(TO_CHAR(score))
    FROM test
дал бы точно такие же результаты, как
SELECT stuName, score
но
SELECT stuName, score, CONCAT_WS(',', stuName, TO_CHAR(score)) FROM test
дать бы
John   1    John,1
Joan   2    Joan,2 etc
Обратите внимание, что CONCAT_WS вставляет разделитель между каждым элементом. Он игнорирует нули, поэтому, если все элементы равны нулю, он вернет пустую строку.

А вот ссылка для CONCAT - Функция MySQL CONCAT () - w3resource[^]
CONCAT делает то же самое, что и CONCAT_WS, но не вставляет разделитель. Кроме того, если все элементы равны NULL, то функция вернет NULL, а не пустую строку.

"Условия" использования каждого из них полностью зависят от того, каких результатов вы пытаетесь достичь!


Maciej Los

5 - за старание!