Je souhaite créer une procédure stockée qui reçoit un tableau d'entiers et d'autres entrées comme :
CREATE PROCEDURE test (field1 varchar(4), field2 varchar(4), array varchar (255))
Dans la procédure stockée, je souhaite l'utiliser comme ceci :
... WHERE some_field IN (array) ...
Le problème est que de cette façon, je n'obtiens que les lignes correspondant au premier entier du tableau.
Y a-t-il un moyen de le faire fonctionner (j'ai aussi essayé d'utiliser FIND_IN_SET
但它的作用与 IN
exactement de la même manière) ?
L'appel que j'ai passé pour tester la procédure stockée était CALL test (12, 13, '1, 2, 3')
.
Il n'y a pas de notion de tableau. C'est donc probablement ce que vous pouvez faire
Votre
array
变量的值为'1, 2, 3'
comme ficelleDivisez la chaîne en utilisant
,
comme délimiteur,Insérez chaque valeur dans une table temporaire
Votre table temporaire aura donc
1,2,3
En fin de compte, utilisez simplement votre table temporaire
FIND_IN_SET() fonctionne, mais vous ne pouvez pas avoir d'espaces dans la chaîne numérique.
Démo :
Vous devez donc former la liste sans espaces avant de la transmettre à la procédure, ou utiliser REPLACE() dans la procédure pour supprimer les espaces.