sql >> Database >  >> RDS >> Mysql

Kolomnaam doorgeven als parameter in MySQL

Wat betreft het doorgeven van een kolomnaam als parameter in MySQL (de vraag in de titel), dat is niet mogelijk in een SQL-statement. De ID's in een SQL-instructie (bijvoorbeeld de tabelnamen en kolomnamen) moet deel uitmaken van de SQL-tekst. Die kunnen niet worden doorgegeven met een tijdelijke aanduiding voor binden.

De IN vergelijkingsoperator verwacht een lijst met waarden tussen haakjes, of een SELECT-query tussen haakjes die een reeks waarden retourneert.

Het is niet duidelijk wat je probeert te doen.

Ik vermoed dat template_allowed_parent_templates is een kolom in de tabel en bevat een door komma's gescheiden lijst met waarden. (huiver.)

Ik vermoed dat je op zoek bent naar de MySQL FIND_IN_SET string-functie, die een door komma's gescheiden lijst "zoekt" naar een bepaalde waarde.

Als een eenvoudige demonstratie:

  SELECT FIND_IN_SET('5', '2,3,5,7')
       , FIND_IN_SET('4', '2,3,5,7')

De functie retourneert een positief geheel getal wanneer de opgegeven waarde "gevonden" is. U kunt die functie gebruiken in een predikaat, bijvoorbeeld

WHERE FIND_IN_SET(id,template_allowed_parent_templates)

of

WHERE FIND_IN_SET( ? ,template_allowed_parent_templates)

(Dit werkt omdat in MySQL een positief geheel getal wordt geëvalueerd als WAAR in een booleaanse context.)

Ik gok alleen wat je probeert te bereiken.



  1. Mysql-fout 1452 - Kan een onderliggende rij niet toevoegen of bijwerken:een beperking van een externe sleutel mislukt

  2. Waarschuwing:mysql_query():3 is geen geldige MySQL-Link-bron

  3. Automatisch SQLite-queryresultaten openen in een teksteditor

  4. Wat is de beste manier om mijn opgeslagen procedures op de SQL-server te beheren?