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

Come convertire i parametri legati al punto interrogativo in stile MySQL `?` nel parametro legato `$1` in stile Postgres

NO. E non c'è corrispondenza diretta tra ? e $1 sintassi, perché quest'ultima implica il riutilizzo dei parametri, mentre ? non lo permette. Ad esempio, utilizzando ? ? ? implica che hai 3 parametri di formattazione, mentre $1 $2 $2 implica che hai due parametri di formattazione.

Non è probabile, poiché non c'è corrispondenza diretta, la conversione sia possibile solo unidirezionale, il che renderebbe tale utilità abbastanza inutile. Puoi sostituire tutto da solo, con un'unica espressione regolare, sostituendo ogni ? con $ + index + 1 .

Non hai davvero molta scelta in questo. Deve essere fatto. Inoltre, $1 è molto più flessibile di ? , a causa del riutilizzo dei parametri, oltre alle estensioni opzionali. Ad esempio, pg-promise li estende molto bene, con vari modificatori di formattazione che sono necessari frequentemente:^ , ~ , :json , :csv , ecc...

Probabilmente trascorrerai meno tempo a convertire manualmente il tuo SQL, rispetto a scrivere un'utilità per la conversione unidirezionale corretta.