Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie konvertiere ich Fragezeichen-`?`-gebundene Parameter im MySQL-Stil in `$1`-gebundene Parameter im Postgres-Stil

NEIN. Und es gibt keine direkte Entsprechung zwischen ? und $1 Syntax, da letztere die Wiederverwendung von Parametern impliziert, während ? erlaubt es nicht. Verwenden Sie beispielsweise ? ? ? impliziert, dass Sie 3 Formatierungsparameter haben, während $1 $2 $2 impliziert, dass Sie zwei Formatierungsparameter haben.

Unwahrscheinlich, da es keine direkte Korrespondenz gibt, ist die Konvertierung nur in eine Richtung möglich, was ein solches Dienstprogramm ziemlich nutzlos machen würde. Sie können alles selbst durch einen einzigen regulären Ausdruck ersetzen, indem Sie jedes ? ersetzen mit $ + index + 1 .

Du hast da nicht wirklich viel Wahl. Es muss getan werden. Außerdem $1 ist viel flexibler als ? , aufgrund der Wiederverwendung von Parametern, plus optionale Erweiterungen. Beispiel:pg-promise erweitert sie sehr schön, mit verschiedenen Formatierungsmodifikatoren, die häufig benötigt werden:^ , ~ , :json , :csv , usw...

Sie werden wahrscheinlich weniger Zeit damit verbringen, Ihr SQL von Hand zu konvertieren, als ein Dienstprogramm für die richtige Konvertierung in eine Richtung zu schreiben.