Comme ça:
SÉLECTIONNEZ * DANS LA TABLE O UN IN (?)
quand j'utilise l'interface de requête db.Query (sSql, vArgs ...), comment entrer para?
comme une chaîne comme celle-ci: "a, b, c"?
ou comme un tableau comme celui-ci: [a, b, c]?
ou comme une tranche comme celle-ci: ["a", "b", "c"]?
tout cela a échoué, pleure ...
Ceci est un double de # 107.
Cela ne fonctionnera pas.
Un ?
ne peut pas correspondre à quoi que ce soit modifiant le plan d'exécution de l'instruction après sa préparation.
Voici le cas pour lequel il ne peut pas être utilisé (peut être incomplet):
Vous devrez réécrire votre requête. Si vous avez toujours 3 arguments, faites-le
SELECT * FROM TABLE WHERE A IN (?, ?, ?)
.
Sinon, vous devez créer la requête en fonction du nombre d'éléments de tranche ou rechercher une autre approche.
Salut Arnehormann merci pour votre réponse, si vous utilisez comme ceci "SELECT * FROM TABLE WHERE A IN (?,?,?)", Je dois savoir combien de para; mais généralement je ne sais pas combien de para il y a, donc je veux utiliser dans un para d'entrée de chaîne comme ceci: SELECT * FROM TABLE WHERE A IN (?), et requête à partir d'une chaîne ou [] string ext.
Merci
br pour toi.
@ zhaohui-kevin, sauf si quelque chose me manque. Vous savez toujours combien il y a de paramètres car vous devez soit passer des arguments individuels à Query()
soit développer une tranche avec s...
alors construisez simplement la requête avec le nombre correct d'espaces réservés en fonction de cette connaissance http : //play.golang.org/p/mA2KwolV-n
En lisant ceci, je ne sais pas si vous savez quoi faire maintenant ou non.
Si vous ne connaissez pas le nombre de paramètres à l'avance, vous ne pouvez pas utiliser ?
.
Vous devez donc faire quelque chose comme
if len(inValues) > 0 {
query = "SELECT * FROM " + table + " WHERE " + column +
" IN (?" + strings.Repeat(",?", len(inValues)-1)) + ")"
....
}
EDIT Merci @DisposaBoy , cela semble plutôt familier: +1:
Je sais comment utiliser comme ça, mais ce n'est pas mon esprit :) De toute façon merci beaucoup.
À 2013-11-22 19:06:15, "Arne Hormann" [email protected] a écrit:
En lisant ceci, je ne sais pas si vous savez quoi faire maintenant ou non.
Si vous ne connaissez pas le nombre de paramètres à l'avance, vous ne pouvez pas utiliser?.
Vous devez donc faire quelque chose comme
iflen (inValues)> 0 {query = "SELECT * FROM" + table + "WHERE" + colonne + "IN (?" + strings.Repeat (",?", len (inValues) -1)) + ")" .. ..}
-
Répondez directement à cet e-mail ou affichez-le sur GitHub.
Commentaire le plus utile
Ceci est un double de # 107.
Cela ne fonctionnera pas.
Un
?
ne peut pas correspondre à quoi que ce soit modifiant le plan d'exécution de l'instruction après sa préparation.Voici le cas pour lequel il ne peut pas être utilisé (peut être incomplet):
Vous devrez réécrire votre requête. Si vous avez toujours 3 arguments, faites-le
SELECT * FROM TABLE WHERE A IN (?, ?, ?)
.Sinon, vous devez créer la requête en fonction du nombre d'éléments de tranche ou rechercher une autre approche.