node.js - How to convert MySQL-style question mark `?` bound parameters to Postgres-style `$1` bound parameter -
i converting existing project mysql postgres. there quite few raw sql literals in code use ?
placeholder, e.g.
select id users name = ?
but error:
db query error: error: operator not exist: character varying = ?
i don't want convert existing sql ?
postgres-style operators $1
.
is there way of having node-postgres accept question marks instead, or utility can convert postgres style params?
note sort of regex-based hack not acceptable because question marks can inside quotes, or backslash escaped depth.
is there way of having node-postgres accept question marks instead?
no. , there no direct correspondence between ?
, $1
syntax, because latter implies parameter re-use, while ?
doesn't allow it. example, using ? ? ?
implies have 3 formatting parameters, while $1 $2 $2
implies have 2 formatting parameters.
or utility can convert postgres style params?
not likely, since there no direct correspondence, conversion possible one-way, make such utility useless. can replace yourself, single regular expression, replacing each ?
$
+ index
+ 1
.
i don't want convert existing sql
?
postgres-style operators$1
.
you don't have choice in this. has done. besides, $1
way more flexible ?
, due parameter re-use, plus optional extensions. example, pg-promise extends them nicely, various formatting modifiers needed frequently: ^
, ~
, :json
, :csv
, etc...
note sort of regex-based hack not acceptable because question marks can inside quotes, or backslash escaped depth.
you spend less time converting sql hand, time write utility one-way proper conversion.
Comments
Post a Comment