sql >> Databáze >  >> RDS >> Mysql

MySQL chybný výstup s klauzulí IN a parametrem

Parametry takto nefungují; nemají ponětí, že to, co se snažíte poskytnout, je seznam hodnot oddělených čárkami. Pokud nastavíte ParamByName('WhatEver').AsString nebo Value , myslí si, že máte na mysli řetězec v uvozovkách, který obsahuje vše, co patří do tohoto parametru. Dělá tedy přesně to, co vypadá – předává IN ('1, 2, 3') , namísto zamýšleného IN (1, 2, 3) .

Budete se muset buď vrátit k analýze sami a pomocí dočasné tabulky, nebo vytvořit WHERE klauzule dynamicky a před provedením dotazu ji zřetězí. (Ve skutečnosti byste mohli dotaz sestavit dynamicky vytvořením nového parametru pro každou z položek v IN klauzuli a poté procházet a přiřazovat hodnoty každému z těchto dynamicky vytvářených parametrů, ale to se velmi rychle stane velmi ošklivým.)



  1. MySQL řazení se symboly jako prvním písmenem

  2. Jak mohu změnit indexovaný varchar (255) z utf8 na utf8mb4 a stále zůstat pod maximální délkou klíče 767?

  3. Vyberte bez FROM, ale s více než jedním řádkem

  4. Jak obnovit jednu tabulku MySQL pomocí mysqldump?