Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como converter parâmetros vinculados `?` do ponto de interrogação no estilo MySQL para o parâmetro vinculado `$1` no estilo Postgres


NÃO. E não há correspondência direta entre ? e $1 sintaxe, porque o último implica a reutilização de parâmetros, enquanto ? não permite. Por exemplo, usando ? ? ? implica que você tem 3 parâmetros de formatação, enquanto $1 $2 $2 implica que você tem dois parâmetros de formatação.

Não é provável, já que não há correspondência direta, a conversão só é possível em um sentido, o que tornaria tal utilidade bastante inútil. Você pode substituir tudo sozinho, com uma única expressão regular, substituindo cada ? com $ + index + 1 .

Você realmente não tem muita escolha nisso. Isso tem que ser feito. Além disso, $1 é muito mais flexível que ? , devido à reutilização de parâmetros, além de extensões opcionais. Por exemplo, pg-promise estende-os muito bem, com vários modificadores de formatação que são necessários com frequência:^ , ~ , :json , :csv , etc...

Você provavelmente gastará menos tempo convertendo seu SQL manualmente do que o tempo para escrever um utilitário para a conversão adequada unidirecional.