Maison  >  Article  >  base de données  >  Instructions sur l'utilisation des fonctions mysql concat et group_concat

Instructions sur l'utilisation des fonctions mysql concat et group_concat

jacklove
jackloveoriginal
2018-06-09 09:30:022120parcourir

Fonction 1.concat()

Méthode d'utilisation : concat(str1, str2,…)
Le résultat renvoyé est la chaîne générée par le paramètre de connexion S'il y en a. any Si le paramètre est nul, la valeur de retour est nulle

Remarque :
Si tous les paramètres sont des chaînes non binaires, le résultat est une chaîne non binaire
Si l'argument est dans Contient n'importe quelle chaîne binaire, le résultat est une chaîne binaire
Un paramètre numérique est converti en un format de chaîne binaire équivalent. Pour éviter cela, vous pouvez utiliser une conversion de type explicite

Par exemple. :

select concat(cast(int_col as char), char_col);

Exemple d'utilisation :
1. Ajoutez ',' aux deux extrémités du champ

mysql> select concat(',',name,',') from `user`;
+--------------------------+| concat(',',fdipzone,',') |
+--------------------------+| ,fdipzone,               |
+--------------------------+1 row in set (0.00 sec)

<.>
2. L'un des paramètres est nul

mysql> select concat(null,name) from `user`;
+-------------------+| concat(null,name) |
+-------------------+| NULL              |
+-------------------+1 row in set (0.00 sec)
2.fonction concat_ws()

Utilisation :

concat_ws(separator,str1,str2, …)

La fonction concat_ws() est une forme spéciale de la fonction concat(). Le premier paramètre est le séparateur des autres paramètres. La position du délimiteur se situe entre les deux chaînes à concaténer. Le délimiteur peut être une chaîne ou d'autres paramètres.

Si le délimiteur est nul, le résultat est nul.
La fonction ignore les valeurs nulles après tout paramètre délimiteur, mais concat_ws() n'ignore aucune chaîne vide.

Exemple d'utilisation :
1. Utilisez ',' pour séparer plusieurs champs

mysql> select concat_ws(&#39;,&#39;,country_code,phone,region) from `user`;
+------------------------------------------+| concat_ws(&#39;,&#39;,country_code,phone,region) |
+------------------------------------------+| 86,13794830550,GZ                        |
+------------------------------------------+1 row in set (0.00 sec)


2. .Le délimiteur est nul

mysql> select concat_ws(null,country_code,phone,region) from `user`;
+-------------------------------------------+| concat_ws(null,country_code,phone,region) |
+-------------------------------------------+| NULL                                      |
+-------------------------------------------+1 row in set (0.00 sec)


3. Il y a des chaînes nulles et vides dans les paramètres

mysql> select concat_ws(&#39;,&#39;,country_code,phone,null,region,&#39;&#39;,grade) from `user`;
+--------------------------------------------------------+| concat_ws(&#39;,&#39;,country_code,phone,null,region,&#39;&#39;,grade) |
+--------------------------------------------------------+| 86,13794830550,GZ,,200                                 |
+--------------------------------------------------------+1 row in set (0.00 sec)
3.group_concat( ) Comment utiliser la fonction

 :

GROUP_CONCAT([DISTINCT] expr [,expr …] [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col …]]
[SEPARATOR str_val])

group_concat peut obtenir la valeur de connexion de la combinaison d'expressions et utiliser distinct pour exclure les valeurs en double. Le tri peut être effectué à l’aide de la clause order by.

separator est une chaîne utilisée pour séparer chaque élément du jeu de résultats. La valeur par défaut est la virgule, ce séparateur peut être complètement supprimé en spécifiant le séparateur "".

Exemple d'utilisation :

Structure de table

CREATE TABLE `article_in_category` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `article_id` int(11) unsigned NOT NULL, `category_id` int(11) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `article_id_INDEX` (`article_id`), KEY `category_id_INDEX` (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Insérer des données :

INSERT INTO `article_in_category` (`id`, `article_id`, `category_id`) VALUES (NULL, &#39;1&#39;, &#39;1&#39;),
(NULL, &#39;1&#39;, &#39;2&#39;),(NULL, &#39;1&#39;, &#39;3&#39;),(NULL, &#39;2&#39;, &#39;4&#39;),(NULL, &#39;2&#39;, &#39;3&#39;),(NULL, &#39;2&#39;, &#39;5&#39;),(NULL, &#39;3&#39;, &#39;1&#39;),
(NULL, &#39;3&#39;, &#39;5&#39;),(NULL, &#39;3&#39;, &#39;6&#39;),(NULL, &#39;4&#39;, &#39;8&#39;);
mysql> select * from `article_in_category`;
+----+------------+-------------+| id | article_id | category_id |
+----+------------+-------------+|  1 |          1 |           1 |
|  2 |          1 |           2 |
|  3 |          1 |           3 |
|  4 |          2 |           4 |
|  5 |          2 |           3 |
|  6 |          2 |           5 |
|  7 |          3 |           1 |
|  8 |          3 |           5 |
|  9 |          3 |           6 || 10 |          4 |           8 |
+----+------------+-------------+
Obtenir l'article id et tous les identifiants de catégorie

mysql> select article_id,group_concat(category_id order by category_id asc) from `article_in_category` group by article_id;
+------------+----------------------------------------------------+| article_id | group_concat(category_id order by category_id asc) |
+------------+----------------------------------------------------+|          1 | 1,2,3                                              |
|          2 | 3,4,5                                              |
|          3 | 1,5,6                                              ||          4 | 8                                                  |
+------------+----------------------------------------------------+4 rows in set (0.00 sec)

Remarque : la fonction group_concat() a une limite de longueur sur le résultat renvoyé, la valeur par défaut est de 1024 octets

Afficher la longueur maximale de la valeur de retour de group_concat

mysql> show global variables like &#39;%group_concat_max_len%&#39;;
+----------------------+-------+| Variable_name        | Value |
+----------------------+-------+| group_concat_max_len | 1024  |
+----------------------+-------+

Modifier la longueur maximale de la valeur de retour de group_concat

mysql> set global group_concat_max_len=2048;
Query OK, 0 rows affected (0.03 sec)mysql> show global variables like &#39;%group_concat_max_len%&#39;;
+----------------------+-------+| Variable_name        | Value |
+----------------------+-------+| group_concat_max_len | 2048  |
+----------------------+-------+
Cet article explique la fonction mysql concat et les instructions d'utilisation de group_concat, veuillez faire attention au site Web php chinois pour plus de contenu connexe.

Recommandations associées :

Explication sur la façon de gérer l'échec du démarrage de mysql innodb et ne peut pas être redémarré

Explication sur la façon d'obtenir le date spécifiée en PHP

Explication détaillée de PHP générant une classe RequestID unique


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn