sql >> Databasteknik >  >> RDS >> Mysql

Skickar kolumnnamn som parameter i MySQL

När det gäller att skicka ett kolumnnamn som en parameter i MySQL (frågan i rubriken), så är det inte möjligt i en SQL-sats. identifierare i en SQL-sats (t.ex. tabellnamnen och kolumnnamnen) måste vara en del av SQL-texten. De kan inte skickas in med en bindningsplatshållare.

IN jämförelseoperatorn förväntar sig en lista med värden inneslutna i parens, eller en SELECT-fråga omsluten av parens som returnerar en uppsättning värden.

Det är inte klart vad du försöker göra.

Jag misstänker att template_allowed_parent_templates är en kolumn i tabellen och den innehåller en kommaseparerad lista med värden. (ryser.)

Jag misstänker att du kanske letar efter MySQL FIND_IN_SET strängfunktion, som kommer att "söka" i en kommaseparerad lista efter ett visst värde.

Som en enkel demonstration:

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

Funktionen returnerar ett positivt heltal när det angivna värdet "hittas". Du kan använda den funktionen i ett predikat, t.ex.

WHERE FIND_IN_SET(id,template_allowed_parent_templates)

eller

WHERE FIND_IN_SET( ? ,template_allowed_parent_templates)

(Detta fungerar eftersom ett positivt heltal i MySQL utvärderas som TRUE i ett booleskt sammanhang.)

Jag gissar bara på vad du försöker åstadkomma.



  1. Hur man hoppar över rader som bryter mot begränsningar när man infogar data i SQLite

  2. Lagra flera rader från mysql-databasen i en enda variabel

  3. Hur kör man en fråga som är lagrad i en tabellkolumn MySQL?

  4. Postgresql ändra kolumntyp från int till UUID