Postgres, errore di query: ERRORE: operatore inesistente: carattere variabile = bigint?

Aug 21 2020

Sto cercando di eseguire questa query:

select *
from my_table
where column_one=${myValue}

Ottengo il seguente errore in Datagrip:

[42883] ERROR: operator does not exist: character varying = bigint Hint: No operator matches the given name and argument types. You might need to add explicit type casts.

Ora, ho trovato questa domanda e posso correggere l'errore inserendo una stringa come questa:

select *
from my_table
where column_one='123'

Quello di cui ho bisogno è un modo per passare "123" come parametro. Di solito lo faccio ${myValue}e funziona, ma non sono sicuro di come mantenere la mia variabile come input in modo da poter eseguire query dinamiche nel codice e far capire a Postgres che voglio passare una stringa e non un numero.

Eventuali suggerimenti?

Ecco uno screenshot di come metto il valore del parametro in DataGrip ...:

Ok, quindi, ho appena provato a inserire virgolette nel campo di input dei parametri del grip dati per la risposta di myValue @ Thirumal, le cose funzionano. Non sapevo di dover citare il valore perché funzionasse. Ecco come appare:

Risposte

1 Thirumal Aug 21 2020 at 12:37

Digitare cast ${myValue}utilizzando SQL Standard,

cast(${myValue} AS varchar)

o utilizzando la sintassi di Postgres:

${myValue}::varchar