Übergeben Sie ein Array von ganzen Zahlen im Array von Parametern

9

Ich versuche, ein Array von Parametern im Parameterfeld von pg-promise zu übergeben, wie in pg-promise docs .

%Vor%

Aber es funktioniert nicht, ich habe einen Fehler zurückgegeben "nach der Argumentliste" Fehler. Oder ein "Operator existiert nicht: Integer = Integer []]" Fehler, wenn ich die Parameter ersetzen durch:

%Vor%

Natürlich, wenn ich es so überlasse, funktioniert es:

%Vor%

Ist es die richtige Art, ein Array von Werten zu übergeben, wenn andere Parameter beteiligt sind?

Ich habe auch versucht, die Klammer um die $ 2 zu entfernen, ohne Erfolg.

    
Stanislasdrg 25.04.2016, 11:51
quelle

2 Antworten

13

Ich bin der Autor von pg-promise .

Es gibt einige Verwirrung in Ihrem Beispiel ...

Sie verwenden nur zwei Variablen in der Abfrage, geben aber vier Werte ein:

  • 1
  • [[1730442],[1695256]]
  • [487413]
  • [454336]

Und deine Syntax dort ist kein gültiges JavaScript, da du ] am Ende ohne das passende öffnende verwendest, also ist es schwer zu verstehen, was genau du gerade anpassest.

>

Und warum sollten dann alle Werte wieder in Arrays eingeschlossen werden? Ich glaube, es ist nur eine Liste von ganzen Zahlen, die Sie in der IN() -Anweisung haben wollen.

Wenn Sie Werte innerhalb von WHERE IN() verwenden möchten, handelt es sich nicht wirklich um ein Array dieser Werte, die Sie übergeben möchten. Es handelt sich um eine durch Kommas getrennte Liste von Werten.

Wenn Sie Ihr Beispiel wie folgt ändern:

%Vor%

Sie erhalten die korrekte Liste der injizierten Werte.

Siehe auch:

vitaly-t 25.04.2016, 18:05
quelle
3

Eine andere Möglichkeit ist:

%Vor%

Von postgresql Handbuch hier: Ссылка

  

Die rechte Seite ist ein geklammerter Ausdruck, der ein   Array-Wert. Der linke Ausdruck wird ausgewertet und verglichen mit   Jedes Element des Arrays verwendet den gegebenen Operator, der a ergeben muss   Boolesches Ergebnis Das Ergebnis von ANY ist "wahr", wenn ein echtes Ergebnis vorliegt   erhalten. Das Ergebnis ist "falsch", wenn kein richtiges Ergebnis gefunden wird (einschließlich   der Fall, in dem das Array keine Elemente enthält.)

     

Wenn der Array-Ausdruck ein Null-Array ergibt, ist das Ergebnis von ANY   Null. Wenn der linke Ausdruck null ergibt, ist das Ergebnis von ANY   normalerweise null (obwohl ein nicht strikter Vergleichsoperator   möglicherweise ein anderes Ergebnis liefern). Auch wenn das rechte Array   enthält alle Nullelemente und es wird kein echtes Vergleichsergebnis erhalten,   Das Ergebnis von ANY wird null sein, nicht falsch (wieder unter der Annahme eines strikten   Vergleichsoperator). Dies entspricht den normalen SQL-Regeln   für boolesche Kombinationen von Nullwerten.

     

SOME ist ein Synonym für ANY.

    
Anatoly 03.11.2016 14:07
quelle

Tags und Links