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

Sender kolonnenavn som parameter i MySQL

For så vidt angår at overføre et kolonnenavn som en parameter i MySQL (spørgsmålet i titlen), er det ikke muligt i en SQL-sætning. identifikatorerne i en SQL-sætning (f.eks. tabelnavne og kolonnenavne) skal være en del af SQL-teksten. Disse kan ikke sendes ind med en bind-pladsholder.

IN sammenligningsoperator forventer en liste over værdier indesluttet i parens eller en SELECT-forespørgsel omsluttet af parens, der returnerer et sæt værdier.

Det er ikke klart, hvad du forsøger at gøre.

Jeg formoder, at template_allowed_parent_templates er en kolonne i tabellen, og den indeholder en kommasepareret liste over værdier. (gys.)

Jeg formoder, at du måske leder efter MySQL FIND_IN_SET strengfunktion, som vil "søge" i en kommasepareret liste efter en bestemt værdi.

Som en simpel demonstration:

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

Funktionen returnerer et positivt heltal, når den angivne værdi er "fundet". Du kan bruge den funktion i et prædikat, f.eks.

WHERE FIND_IN_SET(id,template_allowed_parent_templates)

eller

WHERE FIND_IN_SET( ? ,template_allowed_parent_templates)

(Dette virker, fordi et positivt heltal i MySQL vurderes som SAND i en boolsk kontekst.)

Jeg gætter kun på, hvad du forsøger at opnå.



  1. Forståelse af Hadoop Input Output System

  2. Hvordan får du førende jokertegn-fuldtekstsøgninger til at fungere i SQL Server?

  3. Få tidspunktet for en datetime ved hjælp af T-SQL?

  4. Bedste og optimale måde at tilslutte sig max værdi fra andre tabeller