sql >> Base de Datos >  >> RDS >> Mysql

Cómo convertir los parámetros enlazados del signo de interrogación `?` al estilo MySQL en el parámetro enlazado `$1` al estilo Postgres

NO. Y no hay correspondencia directa entre ? y $1 sintaxis, porque esto último implica la reutilización de parámetros, mientras que ? no lo permite Por ejemplo, usando ? ? ? implica que tiene 3 parámetros de formato, mientras que $1 $2 $2 implica que tiene dos parámetros de formato.

No es probable, ya que no hay una correspondencia directa, la conversión solo es posible en un sentido, lo que haría que dicha utilidad fuera bastante inútil. Puede reemplazar todo usted mismo, con una sola expresión regular, reemplazando cada ? con $ + index + 1 .

Realmente no tienes muchas opciones en esto. Tiene que hacerse. Además, $1 es mucho más flexible que ? , debido a la reutilización de parámetros, más extensiones opcionales. Por ejemplo, pg-promise los amplía muy bien, con varios modificadores de formato que se necesitan con frecuencia:^ , ~ , :json , :csv , etc...

Es probable que pase menos tiempo convirtiendo su SQL a mano que el tiempo escribiendo una utilidad para la conversión unidireccional correcta.