sql >> Database teknologi >  >> RDS >> Mysql

MySQL forkert output med IN-klausul og parameter

Parametre virker ikke sådan; de har ingen idé om, at det, du prøver at give, er en kommasepareret liste over værdier. Hvis du indstiller ParamByName('WhatEver').AsString eller Value , tror den, at du mener en citeret streng, der indeholder alt, hvad der hører til i den parameter. Så den gør præcis, hvad den ser ud til - den sender IN ('1, 2, 3') , i stedet for den tilsigtede IN (1, 2, 3) .

Du skal enten gå tilbage til at analysere det selv og bruge en midlertidig tabel eller bygge WHERE klausul dynamisk og sammenkæde den, før forespørgslen udføres. (Faktisk kan du bygge forespørgslen dynamisk ved at oprette en ny parameter for hvert af elementerne i IN klausul, og derefter gå igennem og tildele værdier til hver af disse dynamisk oprettede parametre, men det bliver meget grimt meget hurtigt.)



  1. Tip til XML-ydelse

  2. Bestemmelse af OID for en tabel i Postgres 9.1?

  3. MySQL :Flere rækker som kommasepareret enkelt række

  4. Gruppér efter LIKE af en kolonneværdi