web-dev-qa-db-fra.com

Concaténer une chaîne avec une valeur de champ dans MySQL

J'ai besoin de concaténer une chaîne avec une valeur de champ dans une requête MySQL afin de pouvoir joindre deux tables à gauche.

La table 1 contient une colonne appelée "category_id" avec des valeurs numériques, telles que 61, 78, 94 et autres.

La table deux contient une colonne appelée "requête" qui fait référence à un mécanisme de routage de requête et des valeurs telles que "product_id = 68", "category_id = 74", "constructeur_id = 99", etc.

Ainsi, dans ma requête, il est nécessaire de joindre les tables chaque fois qu'une chaîne concaténée est dérivée d'une chaîne définie et que la valeur de la colonne "category_id" correspond au champ de requête.

Mon instruction SQL est actuellement:

SELECT * FROM tableOne 
LEFT JOIN tableTwo
ON tableTwo.query = 'category_id=' + tableOne.category_id

J'ai essayé d'utiliser le || opérateur au lieu de l'opérateur +, mais toujours pas de chance. Est-il possible de faire cela dans MySQL, ou ai-je sauté le flingue ici?

53
Ben

Avez-vous essayé d'utiliser la fonction concat () ?

ON tableTwo.query = concat('category_id=',tableOne.category_id)
96
Will Hannah
SELECT ..., CONCAT( 'category_id=', tableOne.category_id) as query2  FROM tableOne 
LEFT JOIN tableTwo
ON tableTwo.query = query2
10
chadzheng

Voici une excellente réponse à cela:

SET sql_mode='PIPES_AS_CONCAT';

Trouvez plus ici: https://stackoverflow.com/a/24777235/4120319

Voici le code SQL complet:

SET sql_mode='PIPES_AS_CONCAT';

SELECT * FROM tableOne 
LEFT JOIN tableTwo
ON tableTwo.query = 'category_id=' || tableOne.category_id;
9
David Namenyi

MySQL utilise CONCAT () pour concaténer des chaînes

SELECT * FROM tableOne 
LEFT JOIN tableTwo
ON tableTwo.query = CONCAT('category_id=', tableOne.category_id)
3
Chris